2014-09-05 118 views
0

我有mysql连接到远程服务器connector.net 6.7.4MYSQL connector.net连接丢失

这样的:

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处理。

我该怎么办?

+3

不要让连接长时间打开。在定时器内创建连接,获取需要的数据并处理它。 – 2014-09-05 17:43:13

回答

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; 
} 
+0

感谢您的建议。我成功地为本地数据库提供了这个东西。我不知道远程数据库有错误。 – JeWoPeR 2014-09-05 18:05:27

+0

我会试试这个。并测试性能。 – JeWoPeR 2014-09-05 18:06:29