mysql链接丢失_处理与MySql丢失的连接

我想检测到MySql数据库的连接状态。我的数据库部署在与我的应用程序不同的服务器上,并且很有可能通过网络失去与它的连接。所以我必须考虑这种情况。

这是我到目前为止所尝试的(一个简化的测试示例):

static string connectionString = "***";

public static MySqlConnection Connection;

static System.Timers.Timer _timer;

static void _timer_Elapsed(object sender, ElapsedEventArgs e)

{

try

{

if (Connection.State != System.Data.ConnectionState.Open)

Connection.Open();

// Call method to invoke MySqlCommand.ExecuteNonQuery

mysqlCommand.ExecuteNonQuery();

}

catch (MySqlException ex)

{

Console.WriteLine("SQL EXCEPTION: " + ex);

// Handle all type of database exceptions

switch(ex.Number)

{...}

}

catch (Exception ex)

{

Console.WriteLine("OTHER EXCEPTION: " + ex);

}

}

static void Main(string[] args)

{

Connection = new MySqlConnection(connectionString);

_timer = new System.Timers.Timer(3000);

_timer.Elapsed += new ElapsedEventHandler(_timer_Elapsed);

_timer.Enabled = true;

Console.ReadKey();

}如果与MySql的连接丢失,我得到一个一般的异常:

IOException : Unable to write data to the transport connection: An

established connection was aborted by the software in your host

machine.

我曾期待MySqlException被解雇,但事实并非如此。

此外,如果与MySql的连接恢复,我仍然会得到IOException而不是执行查询。看起来像MySqlConnection对象没有被更新,它不关心新的连接状态。

处理连接丢失异常的最佳方法是什么?

连线恢复后,如何刷新MySqlConnection?

注意:我无法为每个新查询实例化一个新的MySqlConnection对象,因为我试图更改的程序有一个MySqlConnection类型的Singleton,它只初始化一次。我知道这是一个糟糕的设计,但我现在不想改变这种设计。我只想捕获连接丢失的异常,并尝试刷新MySqlConnection以继续正常工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值