我使用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处理。
我该怎么办?
答案 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;
}