我已通过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处理。

我能做什么?

最佳答案

我不会保持与数据库的连接打开的时间超过了您的需要..当然不会持续数小时。我认为您会遇到某种超时情况。

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

07-24 09:37
查看更多