失去连接后自动重新连接到MySql

5

我有一个使用MySql数据库的C#应用程序,在一段时间不活动(8小时)或连接到托管数据库的服务器丢失后,数据库连接将被关闭,无法执行数据库查询。如何启用自动重新连接到数据库。

祝好。

5个回答

3

我认为首先应该解决的问题是,为什么连接会一直保持8小时?

我认为在大多数情况下,您会连接到数据库,完成您要做的事情,然后关闭它:

using (var conn = new MySqlConnection(connString))
{
  // do what you need here
}

使用代码块将创建一个仅在块内有效的连接。当块结束时,将调用Dispose方法关闭并正确处理连接对象。这将防止您的应用程序在不需要时使用可用连接。
如果您需要确定连接是否打开,则连接变量将具有State属性,该属性将是ConnectionState枚举。
您可以使用以下方式检查它:
if (conn.State != ConnectionState.Open)
{
  conn = new MySqlConnection(connString);
}

希望能帮到您。

1
在您的应用程序中,在任何查询之前,测试您的连接是否仍处于活动状态。如果不是,则重新连接它。Et voila!

0

如果尝试访问数据库失败,请再次运行连接命令。


0

您可以在连接字符串中使用选项keepalivekeepalivetimeout。最好使用MySqlConnectionStringBuilder


0

感谢您的答案和建议。我有这个要求,因为持久性委派给了非托管代码,而在我的C#代码中,我只调用这个API。

我通过更改wait_timeout MySQL参数来解决了我的问题,该参数的默认值为28800秒(8小时),表示闲置期间的时间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接