C#中未指定的错误

时间:2011-07-18 06:25:42

标签: c#

我写了一个程序,每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);
        }
}

2 个答案:

答案 0 :(得分:2)

我同意你没有提供足够信息给我们很多机会来诊断问题的评论。

但是,请尝试移动

OleDbConnection con = new OleDbConnection(...)

执行timer1_Tick例程,这样您就不会不断重新建立连接,看看会发生什么。

我们通常会获取连接并快速释放它们以利用连接池,但我不确定您是否会使用Jet连接池。可能是你正在有效地泄露连接。

这只是猜测,但值得考虑。

答案 1 :(得分:1)

OleDbConnection是一次性资源。你必须手动处理它,

<强>剪断:

使用using

using (var con = new OleDbConnection(...)) {
}

或者如果您想将其生命周期绑定到保持对象,请将该保留对象本身设为IDisposable(您必须手动处置该保留器,goto snip;