首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

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

2013-11-20 
c#使用odbc驱动连接dbf打开很慢连接语句:Odbcconstr@Driver{Microsoft Visual FoxPro Driver}SourceTy

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");
 

代码大体如上,速度飞快

热点排行