为什么多次更新Excel单元时会出现OleDbException?

时间:2012-04-25 14:50:09

标签: c# excel exception oledb

我正在使用以下代码更新Excel文件中的单元格。

public bool WriteChange(string Filename, string SheetName, string Cell, string Value)
{
    if(!System.IO.File.Exists(Filename))
    {
        throw new System.IO.FileNotFoundException("File \"" + Filename + "\" could not be found");
    }
    bool result = false;
    string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Filename + ";Mode=ReadWrite;Extended Properties=\"Excel 8.0;HDR=NO;\"";
    string SQL = "UPDATE [" + SheetName + Cell + ":" + Cell + "] SET F1='" + Value + "'";

    using(OleDbConnection Connection = new OleDbConnection(ConnectionString))
    {
        Connection.Open();
        using(OleDbCommand cmd = new OleDbCommand(SQL,Connection))
        {
            int value = cmd.ExecuteNonQuery();
            if(value > 0)
            {
                result = true;
            }
        }
    }
    return result;
}

哪个工作正常,除非我尝试多次更新同一个单元格。使用此功能更新单元格后,可以再次使用此功能从不更新。如果我再次尝试更新单元格;即使重新启动应用程序,我也会获得OleDbException: System Resource Exceeded

我知道如果你要创建一堆连接到电子表格(例如循环),你通常会收到这个异常,但我每次运行时只连接一次。典型的工作流程是。

  • 启动申请。
  • 致电WriteChange
  • 退出申请。

为什么我在尝试再次连接时连接应该很长时间才会出现此错误?

2 个答案:

答案 0 :(得分:0)

使用以下连接字符串,因为Microsoft.Jet.OLEDB.4.0存在此错误。

string ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @Filename + ";Extended Properties=\"Excel 12.0;HDR=No;\"";

答案 1 :(得分:0)

我认为错误可能已经发生,因为您没有关闭OleDbconnection连接。 完成更新查询后关闭Dbconnection - `int value = cmd.ExecuteNonQuery();