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

还记得那个古老的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,已解除时间限制包可从 http://www.blogjava.net/Files/Unmi/xdbfj21F(CrackedByUnmi).zip 下载)。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的字节码可是能被反编译的,下面告诉各位一下如果不让xBaseJ过期,也不输出过期,并且去除打开文件数量的限制。

先找着是在哪行代码执行后出现过期信息的,在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”就能直接找到在哪里输出的。

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

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

Calendarcalendar=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 newxBaseJException("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文件。还有更多的附加支持包可供下载。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值