SummerRain

软件开发/信息安全
随笔 - 246, 文章 - 0, 评论 - 240, 阅读 - 36万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

【转】ADO.Net连接DBF文件

Posted on   SummerRain  阅读(1098)  评论(0编辑  收藏  举报

 

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连接,方法:

 

复制代码
复制代码

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

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

 

 

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2009-08-02 [转]硬盘低级格式化Lformat
点击右上角即可分享
微信分享提示