mysql open dbf_项目笔记之一:DBF数据库读取

因为现场的数据库用的还是 Visual FoxPro,而自己用的编程语言是C#,不能直接访问,在网上查了不少资料,最后终于在 DRL 找到了一个解决方法,DBF 数据库读取的问题就基本解决了。以下为解决这个问题过程中的一些笔记

1. 用 “Provider=Microsoft.Jet.OLEDB.12.0;” 时,提示如下错误:

An unhandled exception of type 'System.InvalidOperationException' occurred in System.Data.dll

Additional information: 未在本地计算机上注册“Microsoft.Jet.OLEDB.12.0”提供程序。

而用 “Provider=Microsoft.ACE.OLEDB.12.0;” 时,则提示如下错误:

An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll

Additional information: 找不到可安装的 ISAM。

2. 之后根据 DRL 的回帖,用了下面的语句(Provider=VFPOLEDB.1),可以正常导入了。

1 var yourResultSet = newDataTable();2

3 var yourConnectionHandler = new OleDbConnection(@"Provider=VFPOLEDB.1;Data Source=C:\");4

5 yourConnectionHandler.Open();6

7 if (yourConnectionHandler.State != ConnectionState.Open) return;8 const string mySql = "select JH,RCYL from dba04 Where JH like '7P10%'"; //JH like '7P10%' 表示 JH字段中包含 '7P10',而百分号是模糊查询的意思

9

10 var myQuery = newOleDbCommand(mySql, yourConnectionHandler);11 var da = newOleDbDataAdapter(myQuery);12

13 da.Fill(yourResultSet);14

15 yourConnectionHandler.Close();

经过测试, “Visual FoxPro” 和 “FoxBASE+/Dbase III plus, 无备注” 这两种格式的数据库,都可以用上面的语句正常导入,太赞了!

3. 在 Debug 模式下,Any CPU 和 x86 都可以正常导入;而在 Release 模式下Any CPU 就不能正常导入,需要改成 x86 才可以。因为要考虑到 SQLite 在 XP 机器上的应用,所以研究了一下 x86 的问题,还好测试了一下,果然发现问题了。

4. 在 XP 虚拟机中将 Visual FoxPro 卸载之后,再运行程序时提示 “The VFPOLEDB.1 provider is not registered on the local machine.”。重新安装一遍 Visual FoxPro 之后问题消失。

解决方案:最后提供软件的时候附上 Visual FoxPro 的安装程序,简单粗暴。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值