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

时间:2014-09-05 17:40:57

标签: c# mysql connection connector

我使用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(); 它无法使用try catch处理。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

我不会保持与数据库打开的连接比你需要的时间更长......当然不是几个小时。我假设你有某种超时。

尝试在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;
}