我写了一个程序,每1分钟将数据写入2003访问数据库, 20分钟后发生未指定的错误。有什么想法吗?
这是代码
private void timer1_Tick(object sender, EventArgs e)
{
try
{
OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=C:\\DATA.MDB");
con.Open();
new OleDbCommand("UPDATE [DATA] SET Minute = Minute+1", con).ExecuteNonQuery();
con.Close();
}
catch(Exception e)
{
MessageBox.Show(e.Message);
}
}
答案 0 :(得分:2)
我同意你没有提供足够信息给我们很多机会来诊断问题的评论。
但是,请尝试移动
OleDbConnection con = new OleDbConnection(...)
执行timer1_Tick例程,这样您就不会不断重新建立连接,看看会发生什么。
我们通常会获取连接并快速释放它们以利用连接池,但我不确定您是否会使用Jet连接池。可能是你正在有效地泄露连接。
这只是猜测,但值得考虑。
答案 1 :(得分:1)
OleDbConnection
是一次性资源。你必须手动处理它,
<强>剪断:强>
使用using
:
using (var con = new OleDbConnection(...)) {
}
或者如果您想将其生命周期绑定到保持对象,请将该保留对象本身设为IDisposable
(您必须手动处置该保留器,goto snip;
)