这是我的代码:
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冲洗。
答案 0 :(得分:0)
由于我可以可靠地读取文件一次,我最终将整个文件读入内存,然后才使用它。每个强制转储内存空间的事件也会解决连接没有释放文件锁的问题,因此将文件重新加载到内存中也不是问题。
如果我最终找到更好的解决方案,我也会发布它。但是,我认为这是一个死线程,因为该项目已经关闭,交付和支付。