还记得那个古老的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(1) > 2006)
System.err.println("Package Expired");
else
if(calendar.get(1) == 2006)
{
if(calendar.get(2) > 2)
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文件型数据库
使用JDBF库读取DBF文件,可以按照以下步骤进行: - 创建`DbfReader`对象,传入文件路径。 - 调用`DbfReader`的`next()`方法遍历每一条记录。 - 访问字段值,使用`getFieldValue(int index)`或`getFieldValue...
本篇文章将聚焦于如何使用Java的NIO(New Input/Output)包中的RandomAccessFile类来实现多线程读取DBF文件,这在处理大型文件时能显著提升效率。 1. **Java NIO介绍** Java NIO是一个非阻塞I/O模型,提供了与标准...
标题"Java读取DBF文件jar包和测试用例"表明我们要讨论的是一个Java库,它专门用于读取DBF文件,并且已经包含了测试代码来验证其功能。这个jar包名为"javadbf-0.4.0.jar",这可能是一个第三方库,它提供了Java API来...
2. **读取支持**:工具包能够读取DBF文件中的所有记录,包括字段名、字段类型、字段长度等元数据,以及实际的记录数据。开发者可以通过执行SELECT语句获取所需的数据。 3. **写入支持**:除了读取,`dbf-jdbc-...
这种方式通常不需要特殊的驱动或库支持,而是利用Java的基本I/O功能直接读取DBF文件的内容。这种方法适用于简单的数据处理任务,但可能不适用于复杂的数据结构分析或大型数据集处理。 ### 将DBF文件当作表进行操作...
4. **文件I/O**:读取DBF文件时,会涉及到Java的文件I/O操作,如`java.io.File`类的使用,以及`InputStream`和`OutputStream`的子类,用于读写二进制数据。 5. **异常处理**:由于文件操作可能会出现各种异常,如...
4. **文本阅读**:压缩包内的"dbf文件读取.txt"可能包含了关于如何用纯文本方式读取DBF文件的说明。通常,DBF文件的头部和字段定义部分可以被解析成文本,但数据记录部分可能包含二进制数据,直接文本处理可能会遇到...
`readDBF`方法展示了如何使用javadbf库读取DBF文件。首先,通过`FileInputStream`获取文件的输入流,然后创建一个`DBFReader`实例来读取文件。`getFieldCount()`方法用于获取文件中的字段数量,接着遍历每个字段,...
通过以上知识,开发者可以在Java环境下高效地处理DBF文件,无论是读取历史数据,还是整合到现代应用程序中,都能得心应手。在实际应用中,应根据具体需求选择合适的方法和工具,以实现最佳的性能和稳定性。
3. 使用JavaDBF库读取DBF文件 - 首先,通过`DbfFile`的静态方法`open()`打开DBF文件。 - 然后,可以调用`DbfFile`的`getFields()`获取字段列表,`getHeader()`获取表头信息。 - 接着,通过迭代`DbfFile`的`...
5. **使用Java读取DBF**: - `JDBF`:Java库提供了一种简单的方法来读取DBF文件。创建`DbfReader`实例,然后调用`next()`方法遍历所有记录。 6. **使用C#读取DBF**: - `SharpDBF`:这个.NET库提供了读取和写入...
在Java中处理DBF文件并不像处理关系型数据库那样直接,因为Java标准库并未内置对DBF的原生支持。因此,开发者通常需要依赖第三方库或者自定义代码来实现这一功能。 在给定的描述中提到了一个博客链接,虽然具体内容...
3. **编程接口**: 对于熟悉编程的用户,可以使用PL/SQL、Python、Java等语言,通过ODBC或JDBC驱动程序连接Oracle数据库,编写程序读取DBF文件并插入到Oracle表中。 四、具体步骤 以"DBF to Oracle v1.0 英文版"为例...
FoxPro数据库是Microsoft公司开发的一种关系型数据库管理系统,而Java中读取FoxPro数据通常需要用到JDBC-ODBC桥接驱动。JDBC-ODBC桥接驱动允许Java应用程序通过ODBC(Open Database Connectivity)接口来访问任何...
在Java环境中,我们可以利用`caigen`的API,像操作关系型数据库一样处理DBF文件。在给定的压缩包中,`testDBF.java`可能是示例代码,展示了如何使用`caigen`库。而`dbfdriver.jar`则包含了`caigen`的实现,它是运行...
JDBC是Java平台的标准接口,它允许Java应用程序连接并操作关系型数据库。通过JDBC,开发者可以执行SQL语句,处理结果集,甚至进行事务管理。要使用JDBC,必须引入对应数据库的驱动jar文件。 2. **连接Microsoft ...
如果程序在读取DBF文件时未正确识别字符集,就可能出现乱码。为了解决这个问题,需要确保程序在打开文件时明确指定正确的编码方式。 在提供的压缩包文件中,我们可以看到一系列的Java源代码文件,它们可能是一个...
在这个特定的接口中,开发者首先会使用Java Excel API或JDBF库来读取.xls或.dbf文件,解析出其中的数据。然后,通过JDBC驱动,将这些数据转化为适合Oracle数据库的格式,并使用SQL语句将它们批量插入到目标表中。...
在Java环境中,我们可以通过特定的库来读取、写入或操作DBF文件,`jdbf.jar`就是这样一个库,它允许Java程序与DBF文件进行交互。这个库的源代码经过反编译并修改了包名,使得开发者可以更深入地理解其内部工作原理,...