【转】ADO.Net连接DBF文件

 

Shapefile属性表是dbf格式的,开源项目SharpMap提供了二进制读取dbf的方法,但是如果想查询的话,不用数据库还真不好做。ADO.Net的OLE DB和ODBC都可以连接、查询dbf。之前我一直都用OLEDB,如OleDbConnection,OleDbDataAdapter,OleDbCommand等对象操作dbf,方法请参考:http://space.cnblogs.com/question/7423/

使用OLEDB查询DBF的时候,对DBF文件名称的长度有限制。当长度超过8的时候,就会出错:“Jet 数据库引擎找不到对象……”。后来改用ODBC连接,方法:

 

【转】ADO.Net连接DBF文件
【转】ADO.Net连接DBF文件【转】ADO.Net连接DBF文件
 1【转】ADO.Net连接DBF文件string filepath=@"F:\shapefile\chzhXiaoqu.dbf";
 2【转】ADO.Net连接DBF文件string dir = System.IO.Path.GetDirectoryName(filepath);
 3【转】ADO.Net连接DBF文件string file = "["+ System.IO.Path.GetFileName(filepath)+"]";
 4【转】ADO.Net连接DBF文件            
 5【转】ADO.Net连接DBF文件string connStr = "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB="+dir+";Exclusive=No;";
 6【转】ADO.Net连接DBF文件OdbcConnection conn2 = new OdbcConnection(connStr);
 7【转】ADO.Net连接DBF文件conn2.Open();
 8【转】ADO.Net连接DBF文件
 9【转】ADO.Net连接DBF文件string selectText = string.Format("SELECT * FROM {0}", file);
10【转】ADO.Net连接DBF文件OdbcDataAdapter da = new OdbcDataAdapter(selectText, conn2);
11【转】ADO.Net连接DBF文件System.Data.DataTable table = new System.Data.DataTable();
12【转】ADO.Net连接DBF文件da.Fill(table);//OK
【转】ADO.Net连接DBF文件

如果提示错误:“ERROR [IM001] [Microsoft][ODBC 驱动程序管理器] 驱动程序不支持此功能”,需要更新一下驱动,我往Windows\System32下拷贝一个vfpodbc.dll , 6.1.8630.1版本,解决了这个问题。
http://dllcentral.com/download/c7842840e5ce10cd493d02128506ada0/vfpodbc.dll

 

 

上一篇:开放下载 | 阿里连续十年蝉联中国厂商开源活跃度NO.1,《中国开源十年洞察报告》发布


下一篇:Dubbo 第二代掌门人、 PPMC、Spring Cloud Alibaba 负责人北纬荣获2020开源杰出人物