c#使用odbc驱动连接dbf打开很慢
连接语句:
Odbcconstr=@"Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" + table + ";Exclusive=No;NULL=NO;Collate=Machine;BACKGROUNDFETCH=NO;DELETED=NO";
表有上万条记录(文件大小10M左右,而且不断地增长),每次制作几条记录的查询
OdbcCommand Odbccom = new OdbcCommand(Odbcstr, Odbccon);
OdbcDataReader Dr = Odbccom.ExecuteReader();--到了这句的时候就载入整表的内存(10M),查询后内存就释放了。
而且表文件不是储存在本机,觉得每次查询两条记录都要一秒以上。,我想能不能查询后不想释放内存,想知道有更快的方法吗。。。。。
PS:表(.dbf)是foxpro 2.6版本的 dbf c#连接dbf 很慢
[解决办法]
用oledb for vfp(如9.0 Microsoft OLE DB Provider for Visual FoxPro 9.0)连接,可支持vfp的大部分命令
不是oledb for odbc
oledb for vfp下载地址:
http://www.microsoft.com/downloads/details.aspx?FamilyId=E1A87D8F-2D58-491F-A0FA-95A3289C5FD4&displaylang=en
File Name: vfpoledb.exe
Version: 1.1
Date Published: 1/5/2006
Language: English
Download Size: 2.5 MB
安装完oledb for vfp后,建一ado连接,选oledb for vfp,如果是数据库,连接到数据库,如果是自由表,连接到自由表所在目录,然后建一ado command或用ado连接的execute方法
[解决办法]
我的winform程序,用oledb for vfp(如9.0 Microsoft OLE DB Provider for Visual FoxPro 9.0)连接,近5万记录,文件大小DBF:16M,FPT:41M
OleDbConnection DBCon1 = new OleDbConnection("Provider=VFPOLEDB.1;Data Source="+fName+";Collating Sequence=MACHINE");
OleDbDataAdapter adapter = new OleDbDataAdapter("select field1,field2 from xxxx.dbf", DBCon1);
OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);
DataSet ds=new DataSet();
adapter.Fill(ds,"zyk");
...
foreach(DataRow row in ds.Tables["zyk"].Rows)
{
...
}
adapter.Update(ds,"zyk");