日期:2014-05-16 浏览次数:20514 次
做ae开发的时候,我觉得很多人有个通病,就是创建工作区,工作工厂等等来加载shp,然后用arcgis的方法来获取shp图层的属性,
其实我个人看来这个方法是麻烦的。本身都知道,属性是在shp的附属文件中存在的,为什么不直接就像连接数据库表一样来直接读取呢。
我今天尝试了一下,也是遇到了一个问题的原因。
很简单。单纯的读取dbf,首先命名空间:
using System.Data;//针对OdbcDataAdapter
using System.Data.OleDb;//这个不用说,与你当前用的数据库引擎驱动有关系
using System.Collections;//这个针对DataTable
我用的驱动是Microsoft Visual FoxPro Driver。
所以首先确认你的机器是否有这么一个驱动(你也可以用其他的,总归都要有驱动)
而windows系统的system32文件夹中的一个vfpodbc.dll这样的dll。如果您没有转新的vfpodbc驱动器,那么这个dll可能是20kb的大小,这个呢,对于做开发来说是不够的,里面缺少很多的内容。因此下载一个合适的驱动:http://download.csdn.net/source/1869412;这是地址,不行就把系统C盘 windows System32 中的 vfpodbc.dll 换了,原来的大概有20多K,去百度一下,找个900多的K的vfpodbc.dll换了就可以了。
这样,你就可以大胆的写代码了。
DataTable dt = new DataTable();
System.Data.Odbc.OdbcConnection conn = new System.Data.Odbc.OdbcConnection();
string table = @"d:\test.dbf";
string connStr = @"Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" + table +
";Exclusive=No;NULL=NO;Collate=Machine;BACKGROUNDFETCH=NO;DELETED=NO";
conn.ConnectionString = connStr;
conn.Open();
String sql = "select * from " + table;
OdbcDataAdapter da = new OdbcDataAdapter(sql, conn);
da.Fill(dTable);
如果你出现这个问题。可以测试一下试试。