项目笔记之一: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),可以正常导入了。

代码出处:http://stackoverflow.com/questions/22361457/c-sharp-read-from-dbf-files-into-a-datatable

 1 var yourResultSet = new DataTable();
 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 = new OleDbCommand(mySql, yourConnectionHandler);
11 var da = new OleDbDataAdapter(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 的安装程序,简单粗暴。

时间: 2024-11-05 06:18:19

项目笔记之一:DBF数据库读取的相关文章

android直接读取项目中的sqlite数据库

最近项目中要实现android读取sqlite数据库文件,在这里先做一个英汉字典的例子.主要是输入英语到数据库中查询相应的汉语意思,将其答案输出.数据库采用sqlite3. 如图: 实现过程完全是按照参考文章中所述.其中要说明的是,程序在第一次启动的时候,会把数据库安装到内存卡上面,从而可以读却数据库. 相关的代码: Java代码   package com.easymorse; import java.io.File; import java.io.FileOutputStream; impo

Silverlight项目笔记1:UI控件与布局、MVVM、数据绑定、await/async、Linq查询、WCF RIA Services、序列化、委托与事件

最近从技术支持转到开发岗,做Silverlight部分的开发,用的Prism+MVVM,框架由同事搭好,目前做的主要是功能实现,用到了一些东西,侧重于如何使用,总结如下:   1.UI控件与布局     2.MVVM     3.数据绑定     4.await/async     5.Linq查询     6.WCF RIA Services     7.序列化     8.委托与事件 1.UI控件与布局 常用的主要是Grid.StackPanel.Border,其中最常用的的是Grid,是一

《BI项目笔记》数据源视图设置

原文:<BI项目笔记>数据源视图设置 目的数据源视图是物理源数据库和分析维度与多维数据集之间的逻辑数据模型.在创建数据源视图时,需要在源数据库中指定包含创建维度和多维数据集所需要的数据表格和视图.BIDS与数据库连接,读取表格和视图定义,并在数据源视图中存储元数据.元数据是“关于数据的数据”:即表格和视图的名称.列名称.数据类型.主键列和外键关系等.数据源视图允许您提供额外的元数据.如果需要转换数据,可以向表格中添加含有SQL表达式的命名计算.如果需要创建筛选.分组或从多个表中连接数据,可以创

张高兴的 Windows 10 IoT 开发笔记:使用 ADS1115 读取模拟信号

原文:张高兴的 Windows 10 IoT 开发笔记:使用 ADS1115 读取模拟信号 考虑到 Raspberry Pi 读取模拟信号是很烦人的事情,更何况是在没人玩的 Windows 10 IoT 下,所以准备正儿八经的写点东西. 需求:使用 Raspberry Pi 读取输出模拟信号的 MQ 系列气体传感器.(GitHub:https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/ADS1115) 由于 Raspberry

Silverlight项目笔记2:初识Prism以及IoC

项目采用了Prism框架,以下为自己的一些初步认识:   一.Prism Prism是由微软Patterns & Practices团队开发的针对WPF和Silverlight的MVVM框架,好处是将功能模块化,能有效减小程序大小,增强扩展性与可维护性. Prism的几个关键点: (1)启动器类UnityBootstrapper Silverlight程序入口处调用Bootstrapper.Run方法时,Prism会自动做一些初始化工作,包括读取模块信息表,创建模块类实例并初始化(还可以选择按需

Silverlight项目笔记5:Oracle归档模式引起的异常&amp;&amp;表格控件绑定按钮

两个问题: (1)Oracle无法连接正常使用,原因是归档日志满了引起异常,最后选择删除归档日志恢复正常. (2)使用silverlight自带的表格绑定按钮竟然无法使用,通过变通绑定数据源集合,把按钮操作作为数据源集合一部分,重新绑定解决. 一.Oracle归档模式产生日志文件引起数据库异常 连接数据库失败,提示监听错误,各种检查监听配置文件,删除再添加监听,无果. sqlplus下重启数据库数据库依然无果,期间碰到多个错误提示: ORA-01034: ORACLE not available

《BI项目笔记》创建时间维度(1)

原文:<BI项目笔记>创建时间维度(1) SSAS Date 维度基本上在所有的 Cube 设计过程中都存在,很难见到没有时间维度的 OLAP 数据库.但是根据不同的项目需求, Date 维度的设计可能不大相同,所以在设计时间维度的时候需要搞清楚几个问题: 你的业务涉及到的最低的细节级别是什么?比如按季度查看报表还是按月份,或者按周,或者再甚者按天.这个细节级别需要弄清楚,比如在一些销售数据统计,有的时候可能更多按季度或者按月来查看报表.但在有的监控一些机器运行数据的统计,可能会按照小时或者分

《BI项目笔记》SSAS部署时发生的问题——元数据管理器中存在错误 解决办法

原文:<BI项目笔记>SSAS部署时发生的问题--元数据管理器中存在错误 解决办法 在生成和部署期间出错.是否继续?解决办法: 用Microsoft SQL Server Management Studio 连接Analysis Services 然后删除多维数据库,重新布署.这样就OK的.

Spring Security笔记:使用数据库进行用户认证(form login using database)

在前一节,学习了如何自定义登录页,但是用户名.密码仍然是配置在xml中的,这样显然太非主流,本节将学习如何把用户名/密码/角色存储在db中,通过db来实现用户认证 一.项目结构 与前面的示例相比,因为要连接db,所以多出了一个spring-database.xml用来定义数据库连接,此外,为了演示登录用户权限不足的场景,加了一个页面403.jsp,用来统一显示权限不足的提示信息 二.数据库表结构(oracle环境) 1 create table T_USERS 2 ( 3 d_username