我已通过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;
}