前面的博文中提到过项目中有解析dbf数据文件做导入的需求,由于项目中用到的DBF文件由FoxPro产生,本文的重点也围绕FoxPro的DBF文件展开。

其实网上有相当多的java工具,用于解析dbf文件,尝试了很多,效果都不太理想,主要问题出现在乱码问题、解析不到数据,由于个人没也时间去研究源码,其实也比较头疼byte的操作,说到底还是寄希望有个第三方的解析工具。最后让我发现了jdbc-odbc,尝试之后,发现不仅从代码的编写的容易程度还是到数据的解析出错问题都相当的完美,唯一的限制,利用jdbc-odbc解析FoxPro的dbf文件,需要安装微软提供的驱动,编程环境限于window。

由于这次做得是导入,代码的重点也放在读上:

package com.excellence.dbf.javadbf;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

public class DBFJdbcOdbcTest {

public static void main(String[] args) {

Connection conn = null;

PreparedStatement pstm = null;

ResultSet rs = null;

//下面的代码其实都是基本的jdbc代码,所以编写上面基本没什么问题

String DB_URL =

"jdbc:odbc:Driver={Microsoft FoxPro VFP Driver (*.dbf)};" + //写法相对固定

"UID=;"+

"Deleted=Yes;"+

"Null=Yes;"+

"Collate=Machine;"+

"BackgroundFetch=Yes;"+

"Exclusive=No;"+

"SourceType=DBF;"+ //此处指定解析文件的后缀

"SourceDB=E:\\users\\pengsy\\DBF\\data\\main"; //此处为dbf文件所在的目录

try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

try {

conn = DriverManager.getConnection(DB_URL);

pstm = conn.prepareStatement("select * from XXB"); // 此处的XXB 为DBF数据文件的名字

rs = pstm.executeQuery();

ResultSetMetaData metaData = pstm.getMetaData();

//展示dbf元数据信息

System.out.println("metaData.getColumnCount():"+metaData.getColumnCount());

System.out.println("**************************");

for(int i = 1 ; i <= metaData.getColumnCount() ; i++){

System.out.println("metaData.getCatalogName:"+metaData.getCatalogName(i));

System.out.println("metaData.getColumnClassName:"+metaData.getColumnClassName(i));

System.out.println("metaData.getColumnDisplaySize:"+metaData.getColumnDisplaySize(i));

System.out.println("metaData.getColumnLabel:"+metaData.getColumnLabel(i));

System.out.println("metaData.getColumnName:"+metaData.getColumnName(i));

System.out.println("metaData.getColumnType:"+metaData.getColumnType(i));

System.out.println("metaData.getColumnTypeName:"+metaData.getColumnTypeName(i));

System.out.println("metaData.getPrecision:"+metaData.getPrecision(i));

System.out.println("metaData.getScale:"+metaData.getScale(i));

System.out.println("metaData.getSchemaName:"+metaData.getSchemaName(i));

System.out.println("metaData.getTableName:"+metaData.getTableName(i));

System.out.println("**************************");

}

//展示dbf中的行数据

while(rs.next()){

for(int i = 1 ; i <= metaData.getColumnCount() ; i++){

System.out.println(rs.getString(i));

}

System.out.println("*******************************************");

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

if(rs != null){

rs.close();

}

if(pstm != null){

pstm.close();

}

if(conn != null){

conn.close();

}

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

至于FoxPro用到的驱动,这里没法提供了,oschina不支持上传附件。有需要的同学上网上下载或者找我都行。

java foxpro_java解析FoxPro DBF数据文件相关推荐

  1. delphi 创建DBASE和FOXPRO两类DBF数据文件的差异

    delphi 创建DBASE和FOXPRO两类DBF数据文件的差异 delphi 创建DBASE和FOXPRO两类DBF数据文件的差异,主要有几点: 1.创建方法不同 DBASE的创建方法: Self ...

  2. server sql 数据c盘迁移d盘_oracle 11g dbf数据文件从C盘迁移到D盘

    标签: 服务器系统为 windows 2008 R2 64位,由于C盘空间将满,要将C盘的oracle的DBF数据文件迁移到D盘下,步骤如下: 1.输入cmd,启动 cmd.exe窗口 2.输入 sq ...

  3. Java POI解析Word提取数据存储在Excel

    JavaPOI解析word提取数据到excel 一.了解POI POI以前有了解,这次需求是解析word读取其中标题,还有内容赛选获取自己想要的内容 经过两天的学习,开始熟悉Java这么读取word和 ...

  4. java printable_java解析电话薄 VCF文件ENCODING=QUOTED-PRINTABLE编码

    posted on 2008-08-04 11:28 青菜猫(孙宇) 阅读(5587) 评论(6)  编辑  收藏 所属分类: java FeedBack: # re: java解析电话薄 VCF文件 ...

  5. java 读取 解析微软Project .mpp 文件到甘特图

    1.引入价包; <dependency><groupId>org.apache.poi</groupId><artifactId>poi</art ...

  6. c++读取.dat文件_MySQL 数据文件类型

    不同的数据文件后缀名:Data and database file extensions A data file could be any file, but for the purpose of t ...

  7. poi 顺序解析word_JavaPOI解析word提取数据到excel

    Java POI解析Word提取数据存储在Excel 一.了解POI POI以前有了解,这次需求是解析word读取其中标题,还有内容赛选获取自己想要的内容 经过两天的学习,开始熟悉Java这么读取wo ...

  8. ORA-27041: unable to open file--恢复被rm意外删除数据文件

    当数据库中的某个数据文件被误删除之后,DBA可以选择使用已有的备份进行还原与恢复,下文为DBA提供了另一种选择,已经通过测试环境进行了相关测试,该方法是个不错的选择. 转自http://www.xif ...

  9. 【转载】linux中误删除oracle数据文件的恢复操作

    转自:http://space.itpub.net/?uid-26015009-action-viewspace-itemid-763506 下面来模拟误删除users表空中的数据文件users01. ...

最新文章

  1. java transient关键字_小伙子,你真的搞懂 transient 关键字了吗?
  2. 基于LZ77算法的文件解压缩项目缺陷分析
  3. 正则表达式如何匹配正反斜杠
  4. 搭建Windows Embedded Compact 7开发环境
  5. 是圆的问题呢(洛谷P1652题题解,Java语言描述)
  6. vue 监听渲染变化
  7. 50欧姆线设计 高频pcb_高频电路布线的应对方法有哪些?
  8. android mvp_Android MVP
  9. SOA应用难逃出的五座大山
  10. Fragstats运行内存不够或卡顿问题解决
  11. Uniapp使用GoEasy实现websocket实时通讯
  12. 计算机主板上电源供电缩写,新电脑电源标准开始普及?取消5V、3.3V供电,主板供电变为10PIN...
  13. 关联规则-策略挖掘中必不可少的算法
  14. php懂erp是什么意思,ERP是个什么鬼,这里的讲解通俗易懂
  15. 机器是如何学习的?(监督式学习)
  16. C++信息学奥赛一本通(T1413:确定进制)
  17. lowess和loess方法
  18. NOY 139 康托展开
  19. 速记:安卓Netty部署SSL/TLS和避坑指南
  20. ASPICE SWE3之——模型生成软件详细设计2 注释格式

热门文章

  1. AI技术说:人工智能相关概念与发展简史
  2. SpringMVC 中整合JSON、XML视图二
  3. 高性能EL——Fel探秘,兼谈EL
  4. HUB,交换机,路由器,MODEM都有什么区别???
  5. 解决 sublime text 3 there are no packages available for installation 错误
  6. 浏览器保存密码后文本框出现黄色背景的解决方案
  7. Math: Fibonacci
  8. 给Lisp程序员的Python简介
  9. Qt信号槽中槽函数为虚函数的一些感想
  10. 心得18--JavaWEB国际化类和jstl对应的标签案例分析