在C#中使用dBase文件持续使用odbc时遇到问题

时间:2012-01-17 06:39:28

标签: c#-4.0 odbc dbase

这是我的代码:

    private const string CONNECTION_STRING
    = "Driver={Microsoft dBase Driver (*.dbf)};"
    + "collatingsequence=ASCII;"
    + "defaultdir={0};"
    + "driverid=277;"
    + "maxbuffersize={1};"
    + "pagetimeout={2}";

    string connString = string.Format(CONNECTION_STRING, filePath, MAX_BUFFER_SIZE, PAGE_TIMEOUT);

    using (var _conn = new System.Data.Odbc.OdbcConnection(connString))
    {
      _conn.Open();
      using (var _comm = _conn.CreateCommand())
      {
        _comm.CommandText = QUERY_STRING;
        _comm.CommandType = CommandType.Text;
        using (var rdr = _comm.ExecuteReader())
        {
          while (rdr.Read())
          {
            /*Do something*/
          }
        }
      }
    }

我收到的错误消息是 SQL执行错误。 执行的SQL语句:SELECT * FROM MyTable 错误来源odbcjt32.dll 错误消息错误[HY001] [Microsoft] [ODBC dBase驱动程序]超出系统资源。

在查询之前和之后打开几个RAM和HD。这总是在第一次传球时起作用,但在所有连续传球中失败。

在Win 7 64和.NET 4.0中运行。

当我收到错误时,我最终重新启动以清除它。虽然我还没有尝试过做GC冲洗。

1 个答案:

答案 0 :(得分:0)

由于我可以可靠地读取文件一次,我最终将整个文件读入内存,然后才使用它。每个强制转储内存空间的事件也会解决连接没有释放文件锁的问题,因此将文件重新加载到内存中也不是问题。

如果我最终找到更好的解决方案,我也会发布它。但是,我认为这是一个死线程,因为该项目已经关闭,交付和支付。