MYSQL connector.net连接在长时间后丢失

本文关键字:长时间 connector net 连接 MYSQL | 更新日期: 2023-09-27 18:20:52

我使用connector.net 6.7.4 将mysql连接到远程服务器

像这样:

public MySqlConnection conn;
public MySqlCommand com;
public onStart()
{
   conn = new MySqlConnection("Server=xx.xx.xx.xx;Port=3306;Database=kbindb;Uid=collector; Pwd=xxx;");
   conn.Open();
   com = new MySqlCommand("SELECT * FROM blabla;", conn);
   timer.Interval=1000;
   timer.Enabled=True;
}   
public onTimerTick(bla bla)
{
    // timer.Enabled=False;
     MySqlDataReader dr = com.ExecuteReader();
     while(dr.Read()){
            //blabla
      }
     dr.Close();
     //timer.Enabled=True;
 }

代码正在成功运行,但在1-2小时后锁定了以下行的计时器:com.ExecuteReader();它不能用尝试接球来处理。

我能做什么?

MYSQL connector.net连接在长时间后丢失

我不会让与数据库的连接打开超过你需要的时间……当然不会持续数小时。我想你有点超时了。

尝试在tick事件中创建连接,获取数据,然后处理该连接。(以下代码中的using语句将负责处理您的资源。)

public onStart()
{
   timer.Interval = 1000;
   timer.Enabled = true;
}   
public onTimerTick(...)
{
    timer.Enabled = false;
    using (var conn = new MySqlConnection("Server=xx.xx.xx.xx;Port=3306;Database=kbindb;Uid=collector; Pwd=xxx;"))
    {
        conn.Open();
        using (var com = new MySqlCommand("SELECT * FROM blabla;", conn))
        {
            var reader = com.ExecuteReader();
            while (dr.Read())
            {
                //blabla
            }
        }
    }
    timer.Enabled = true;
}