欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

c#使用odbc驱动连接dbf打开很慢,该怎么解决

更新时间: 2014-01-05 02:26:58 责任编辑: Author_N1

 

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版本的
--参考方法--
用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");
 

代码大体如上,速度飞快
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:26:58
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/9903/
本文WWW.DOC100.NET DOC100.NET版权所有。