【转】ADO.NET连接访问dbf数据库问题
2012-08-02 23:57
627 查看
from:http://space.cnblogs.com/question/7423/
悬赏园豆:20 [已解决问题] 浏览: 2067次
我发现当dbf文件的长度超过8的时候,使用OleDbCommand 查询就会出现“jet 数据库引擎找不到对象”的错误,我搜索到(http://space.cnblogs.com/question/2046/)说解决了这个问题,方法是将表的名字加个中括号。但是我在尝试的时候这个方法似乎无效啊.
string mailto:filepath=@%22F:\shapefile\chzhXiaoqu.dbf";
string dir = System.IO.Path.GetDirectoryName(filepath);
string file = "["+ System.IO.Path.GetFileName(filepath)+"]";//加不加中括号都不行啊
string connStr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}; Extended Properties=DBASE 5.0;Persist Security Info=False", dir);
OleDbConnection conn = new OleDbConnection(connStr);
conn.Open();
string selectText = string.Format("SELECT * FROM {0}", file);
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand(selectText, conn);
System.Data.DataTable table = new System.Data.DataTable();
adapter.Fill(table);//这行就出错了,怎么回事呢?
数据库 其它数据库
xiangeboy | 初学一级 | 园豆:180
提问于:2009-06-08 22:18
< > 博问智能手机网页版上线测试,欢迎大家试用、反馈
收藏
其他回答(1)
0
string connStr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}; Extended Properties=DBASE 5.0;Persist Security Info=False", dir);
你看你这个格式化的连接字符串,参数为什么用dir?dir是目录名,不包括路径及文件名,对于你的程序来说,dir变量的值就是"shapefile",程序怎么可能找到数据库文件在哪?
把dir换为filepath应该就可以了,这里需要使用完整绝对路径才对。
还有你这句:string selectText = string.Format("SELECT * FROM {0}", file);
file是数据库的文件名,又不是数据库里的表名,在你的程序中file变量的值就是"chzhXiaoqu.dbf",你把它弄进查询语句干什么?要换成一个数据库内的表名啊。
dir和file变量都是无意义的,删除这两个变量吧。
回复 | 斯克迪亚 | 园豆:4880 (老鸟四级) | 2009-06-09 02:17 |
0
我也赞成楼上的
回复 | 陳修君 | 园豆:480 (菜鸟二级) | 2009-06-09 08:26
===================================================================
===================================================================
如果不清楚连接字符,查看这个网站:http://www.connectionstrings.com/
Visual FoxPro OLE DB, OleDbConnection (.NET)
Database container (.DBC):
"Provider=vfpoledb.1;Data Source=C:\MyDbFolder\MyDbContainer.dbc;Collating Sequence=machine "
Free table directory:
"Provider=vfpoledb.1;Data Source=C:\MyDataDirectory\;Collating Sequence=general "
Force the provider to use an ODBC DSN:
" "Provider=vfpoledb.1;DSN=MyDSN " "
Read more (Microsoft msdn) > >
ODBC
Database container (.DBC):
"Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=c:\myvfpdb.dbc;Exclusive=No;NULL=NO;Collate=Machine;BACKGROUNDFETCH=NO;DELETED=NO "
Free Table directory:
"Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=c:\myvfpdbfolder;Exclusive=No;Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO "
"Collate=Machine " is the default setting, for other settings check the list of supported collating sequences > >
悬赏园豆:20 [已解决问题] 浏览: 2067次
我发现当dbf文件的长度超过8的时候,使用OleDbCommand 查询就会出现“jet 数据库引擎找不到对象”的错误,我搜索到(http://space.cnblogs.com/question/2046/)说解决了这个问题,方法是将表的名字加个中括号。但是我在尝试的时候这个方法似乎无效啊.
string mailto:filepath=@%22F:\shapefile\chzhXiaoqu.dbf";
string dir = System.IO.Path.GetDirectoryName(filepath);
string file = "["+ System.IO.Path.GetFileName(filepath)+"]";//加不加中括号都不行啊
string connStr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}; Extended Properties=DBASE 5.0;Persist Security Info=False", dir);
OleDbConnection conn = new OleDbConnection(connStr);
conn.Open();
string selectText = string.Format("SELECT * FROM {0}", file);
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand(selectText, conn);
System.Data.DataTable table = new System.Data.DataTable();
adapter.Fill(table);//这行就出错了,怎么回事呢?
数据库 其它数据库
xiangeboy | 初学一级 | 园豆:180
提问于:2009-06-08 22:18
< > 博问智能手机网页版上线测试,欢迎大家试用、反馈
收藏
其他回答(1)
0
string connStr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}; Extended Properties=DBASE 5.0;Persist Security Info=False", dir);
你看你这个格式化的连接字符串,参数为什么用dir?dir是目录名,不包括路径及文件名,对于你的程序来说,dir变量的值就是"shapefile",程序怎么可能找到数据库文件在哪?
把dir换为filepath应该就可以了,这里需要使用完整绝对路径才对。
还有你这句:string selectText = string.Format("SELECT * FROM {0}", file);
file是数据库的文件名,又不是数据库里的表名,在你的程序中file变量的值就是"chzhXiaoqu.dbf",你把它弄进查询语句干什么?要换成一个数据库内的表名啊。
dir和file变量都是无意义的,删除这两个变量吧。
回复 | 斯克迪亚 | 园豆:4880 (老鸟四级) | 2009-06-09 02:17 |
0
我也赞成楼上的
回复 | 陳修君 | 园豆:480 (菜鸟二级) | 2009-06-09 08:26
===================================================================
===================================================================
如果不清楚连接字符,查看这个网站:http://www.connectionstrings.com/
Visual FoxPro OLE DB, OleDbConnection (.NET)
Database container (.DBC):
"Provider=vfpoledb.1;Data Source=C:\MyDbFolder\MyDbContainer.dbc;Collating Sequence=machine "
Free table directory:
"Provider=vfpoledb.1;Data Source=C:\MyDataDirectory\;Collating Sequence=general "
Force the provider to use an ODBC DSN:
" "Provider=vfpoledb.1;DSN=MyDSN " "
Read more (Microsoft msdn) > >
ODBC
Database container (.DBC):
"Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=c:\myvfpdb.dbc;Exclusive=No;NULL=NO;Collate=Machine;BACKGROUNDFETCH=NO;DELETED=NO "
Free Table directory:
"Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=c:\myvfpdbfolder;Exclusive=No;Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO "
"Collate=Machine " is the default setting, for other settings check the list of supported collating sequences > >
相关文章推荐
- ADO.NET的学习笔记(一)--数据库连接及常用的数据库访问方式
- sql数据库连接-01ADO.NET的数据库访问小结
- 关于部署完asp.net程序后不能访问页面也不能连接数据库的问题
- ADO.NET 连接方式和非链接方式访问数据库
- 通过ADO.NET访问Sybase ASE 15.5数据库datetime字段的小问题
- 关于ADO.NET连接数据库的问题
- ADO.net实体框架访问不到数据库最新数据问题
- VS2008在做简单的ado.net连接数据库时出现的问题
- ado.net连接sql server 2000数据库一定要连网(连一个路由也可以)的问题
- 关于在英创em9161板上使用ADO.net连接远程数据库提示 “无法找到 PInvoke dll"dbnetlib.dll"”问题解决方法
- ADO.NET 连接方式进行数据库访问
- Com+和数据库访问对象(ADO.Net)的一些问题的研究(2002年12月10日)
- ado.net连接模式访问数据库中datareader的返回多个结果集和mars的使用
- SqlDataAdapter适配器的用法(ADO.NET无连接模式访问数据库)
- 黑马程序员--ADO.NET中连接数据库的问题
- 在Visual Basic.NET使用ADO访问数据库(转for各种数据库连接)
- (4)C#之ADO.NET 将数据库连接字符串成放入配置文件中
- ADO.Net的小知识(连接数据库)
- ADO.NET 用windows方式连接数据库以及简单的增,删,改,查询操作
- 概括ADO.NET中Database 数据库连接形式(基础)