`
liss
  • 浏览: 844137 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

纯Java程序读取DBF文件型数据库

    博客分类:
  • POI
阅读更多

还记得那个古老的Foxbase和Foxpro产生的数据库吗?与access(MDB)类似的文件型数据库,可是有些地方有人还在用它。DBF数据库一般都是在Foxbase或Foxpro中或由它们生成的应用程序来访问,也可以通过建立ODBC的方式来访问。

Java要访问什么数据库第一个念头就会是有没有相应的驱动啊,有驱动那好办,若是没有驱动那能不能通过配置ODBC,用JDBC-ODBC桥来访问呢?当然Java访问DBF文件是可以通过JDBC-ODBC的方式,但这样的话是不是纯Java实现还说,倒是得为要访问的DBF文件建一个数据源麻烦,尤其是程序移植时。

还好有一个访问DBF文件的JDBC驱动可以用,那就是xBaseJ,当前版本是v2.1 (试用版下载地址http://www.americancoders.com)。xBaseJ是一个Java写成的dBase数据库引擎,支持dBase III、IV DBF、DBT、NDX、MDX和FPT文件,还有独立的C/S结构类,用于开发Java程序。不过这东西还真贵,注册费用是$95,是美元啦!

先可以体验一下xBaseJ的简单应用,运行自带的例子程序。解压下载过来的xdbfj21F.zip文件,把其中的xBaseJ.jar加到classpath下,最好在IDE里用。然后可以运行自带的createDBFS.java程序,它会在当前目录创建一个数据库文件DBFs.DBF,再执行testread.java,需要传入参数DBFs.DBF,就是刚刚生成的数据库文件名,控制台下可以看到输出createDBFS程序插入的数据记录。

但同时你也会看到试用版的xBaseJ会在控制台下打印出过期时间(如Package Expires: 2006-04-01  Package Will Expire ),但倘若我写的不控制台程序,过期信息它也找不着去哪儿打印出来。并且同一进程打开的文件数不能超过5个。

不过在Java包中这种限制相信都难不倒多少人,Java的字节码可是能被反编译的,下面告诉各位一下如�蝗脁BaseJ过期,也不输出过期,并且去除打开文件数量的限制。

先找着是在哪行代码执行后出现过期信息的,在testread.java源代码中设个断点,就在第一次介入xBaseJ的代码行处,aDBF = new DBF(arg[0]);。调试时你可以看到就是执行new DBF(arg[0])后打印出过期信息的。用工具(如Java源代码反编译专家)反编译出DBF.class文件,看构造函数DBF(String s)就可以追溯到是private void A600000(String s)方法中打印出来的信息,并对打开文件数作的限制。其实打开的源文件,只要查到一下输出信息,比如"Package Expired"就能直接找到在哪里输出的。

找到了在哪里就好办了,把约束给解除掉啊,注释掉你不想要的东西,例如,把下面两块代码注释掉就行了

第一块是:去除时间限制,不打印提示信息

         Calendar calendar Calendar.getInstance();
        if
(calendar.get(12006)
            
System.err.println("Package Expired");
        else
        if
(calendar.get(1== 2006)
        
{
            if
(calendar.get(22)
                
System.err.println("Package Expired");
            if
(calendar.get(2== 2)
                
System.err.println("Package Will Expire ");
        
}
        
System.out.println("Package Expires: 2006-04-01");

第二块是:去除同一进程打开文件数量限制

        results ++ ;
        if
( results  5L )
            throw new 
xBaseJException ( "Demo Version File Count Overload - limited to 5" ) ;

编译这个DBF类,把生成的DBF.class替换掉原来xBaseJ.jar包中的该文件就行了,就这么简单。如果大家对这种方式侵权无太多的顾虑的话就可以这样用它。

大家反编译xBaseJ的字节码是也会注意到,他们发布的时候还有意把类、方法、变量命名给混淆了一下,但这丝毫不会影响作这种简单的Crack。

对xBaseJ使用上更多的介绍可以参数下载的xdbfj21F.zip中帮助文档,或运行一下所带的其他例子程序,参看网站http://www.americancoders.com/xBaseJ2.1/index.html可以获取到更多的信息。

例如:提供了SWING图形界面创建DBF文件,浏览、增、删、改DBF文件中的记录,还允许通过RMI的方式远程访问DBF文件。还有更多的附加支持包可供下载。

DBF Beans http://www.americancoders.com/xBaseJ2.1/makeDBFbean.zip 简化你的代码读取DBF文件和创建Javabean
xBaseJMailer http://www.americancoders.com/xBaseJMailer.html 读取DBF记录并通过Email发送出去
dbf2xml application http://www.americancoders.com/xBaseJ2.1/dbf2xml.zip 读取DBF记录生成xml文件

分享到:
评论

相关推荐

    纯Java程序读取DBF文件型数据库.doc

    纯Java程序读取DBF文件型数据库

    java 实现DBF文件读取与创建

    使用JDBF库读取DBF文件,可以按照以下步骤进行: - 创建`DbfReader`对象,传入文件路径。 - 调用`DbfReader`的`next()`方法遍历每一条记录。 - 访问字段值,使用`getFieldValue(int index)`或`getFieldValue...

    多线程读取DBF文件

    本篇文章将聚焦于如何使用Java的NIO(New Input/Output)包中的RandomAccessFile类来实现多线程读取DBF文件,这在处理大型文件时能显著提升效率。 1. **Java NIO介绍** Java NIO是一个非阻塞I/O模型,提供了与标准...

    Java读取DBF文件jar包和测试用例

    标题"Java读取DBF文件jar包和测试用例"表明我们要讨论的是一个Java库,它专门用于读取DBF文件,并且已经包含了测试代码来验证其功能。这个jar包名为"javadbf-0.4.0.jar",这可能是一个第三方库,它提供了Java API来...

    dbf-jdbc-wisecoders,JAVA 读写DBF文件工具包

    2. **读取支持**:工具包能够读取DBF文件中的所有记录,包括字段名、字段类型、字段长度等元数据,以及实际的记录数据。开发者可以通过执行SELECT语句获取所需的数据。 3. **写入支持**:除了读取,`dbf-jdbc-...

    java解析dbf文件三种方法、以及解析驱动

    这种方式通常不需要特殊的驱动或库支持,而是利用Java的基本I/O功能直接读取DBF文件的内容。这种方法适用于简单的数据处理任务,但可能不适用于复杂的数据结构分析或大型数据集处理。 ### 将DBF文件当作表进行操作...

    java操作dbf+java读取dbf 项目源码

    4. **文件I/O**:读取DBF文件时,会涉及到Java的文件I/O操作,如`java.io.File`类的使用,以及`InputStream`和`OutputStream`的子类,用于读写二进制数据。 5. **异常处理**:由于文件操作可能会出现各种异常,如...

    DBF文件读取

    4. **文本阅读**:压缩包内的"dbf文件读取.txt"可能包含了关于如何用纯文本方式读取DBF文件的说明。通常,DBF文件的头部和字段定义部分可以被解析成文本,但数据记录部分可能包含二进制数据,直接文本处理可能会遇到...

    java解析dbf之通过javadbf包生成和读取dbf文件

    `readDBF`方法展示了如何使用javadbf库读取DBF文件。首先,通过`FileInputStream`获取文件的输入流,然后创建一个`DBFReader`实例来读取文件。`getFieldCount()`方法用于获取文件中的字段数量,接着遍历每个字段,...

    Java下读写DBF数据库文件格式研究.zip

    通过以上知识,开发者可以在Java环境下高效地处理DBF文件,无论是读取历史数据,还是整合到现代应用程序中,都能得心应手。在实际应用中,应根据具体需求选择合适的方法和工具,以实现最佳的性能和稳定性。

    javadbf源码

    3. 使用JavaDBF库读取DBF文件 - 首先,通过`DbfFile`的静态方法`open()`打开DBF文件。 - 然后,可以调用`DbfFile`的`getFields()`获取字段列表,`getHeader()`获取表头信息。 - 接着,通过迭代`DbfFile`的`...

    读取DBF数据.rar

    5. **使用Java读取DBF**: - `JDBF`:Java库提供了一种简单的方法来读取DBF文件。创建`DbfReader`实例,然后调用`next()`方法遍历所有记录。 6. **使用C#读取DBF**: - `SharpDBF`:这个.NET库提供了读取和写入...

    DBF java 操作 dbf foxpro 例子

    在Java中处理DBF文件并不像处理关系型数据库那样直接,因为Java标准库并未内置对DBF的原生支持。因此,开发者通常需要依赖第三方库或者自定义代码来实现这一功能。 在给定的描述中提到了一个博客链接,虽然具体内容...

    dbf格式文件导入orcle

    3. **编程接口**: 对于熟悉编程的用户,可以使用PL/SQL、Python、Java等语言,通过ODBC或JDBC驱动程序连接Oracle数据库,编写程序读取DBF文件并插入到Oracle表中。 四、具体步骤 以"DBF to Oracle v1.0 英文版"为例...

    java 读取FoxPro数据库数据所需要的jar包

    FoxPro数据库是Microsoft公司开发的一种关系型数据库管理系统,而Java中读取FoxPro数据通常需要用到JDBC-ODBC桥接驱动。JDBC-ODBC桥接驱动允许Java应用程序通过ODBC(Open Database Connectivity)接口来访问任何...

    使用caigen解析DBF文件

    在Java环境中,我们可以利用`caigen`的API,像操作关系型数据库一样处理DBF文件。在给定的压缩包中,`testDBF.java`可能是示例代码,展示了如何使用`caigen`库。而`dbfdriver.jar`则包含了`caigen`的实现,它是运行...

    java 链接mssql2005,2008,oracle,mysql,dbf数据库连接jar

    JDBC是Java平台的标准接口,它允许Java应用程序连接并操作关系型数据库。通过JDBC,开发者可以执行SQL语句,处理结果集,甚至进行事务管理。要使用JDBC,必须引入对应数据库的驱动jar文件。 2. **连接Microsoft ...

    解决dbf Failed to parse Number: For input string: "-.---"

    如果程序在读取DBF文件时未正确识别字符集,就可能出现乱码。为了解决这个问题,需要确保程序在打开文件时明确指定正确的编码方式。 在提供的压缩包文件中,我们可以看到一系列的Java源代码文件,它们可能是一个...

    Database_Interface.rar_*.xls_java excel_javadbf foxpro_ojdbc DB

    在这个特定的接口中,开发者首先会使用Java Excel API或JDBF库来读取.xls或.dbf文件,解析出其中的数据。然后,通过JDBC驱动,将这些数据转化为适合Oracle数据库的格式,并使用SQL语句将它们批量插入到目标表中。...

    java操作FoxPro之jdbf.jar的源代码

    在Java环境中,我们可以通过特定的库来读取、写入或操作DBF文件,`jdbf.jar`就是这样一个库,它允许Java程序与DBF文件进行交互。这个库的源代码经过反编译并修改了包名,使得开发者可以更深入地理解其内部工作原理,...

Global site tag (gtag.js) - Google Analytics