純Java程序讀取DBF文件型數(shù)據(jù)庫 |
還記得那個(gè)古老的Foxbase和Foxpro產(chǎn)生的數(shù)據(jù)庫嗎?與access(MDB)類似的文件型數(shù)據(jù)庫,可是有些地方有人還在用它。DBF數(shù)據(jù)庫一般都是在Foxbase或Foxpro中或由它們生成的應(yīng)用程序來訪問,也可以通過建立ODBC的方式來訪問。 Java要訪問什么數(shù)據(jù)庫第一個(gè)念頭就會(huì)是有沒有相應(yīng)的驅(qū)動(dòng)啊,有驅(qū)動(dòng)那好辦,若是沒有驅(qū)動(dòng)那能不能通過配置ODBC,用JDBC-ODBC橋來訪問呢?當(dāng)然Java訪問DBF文件是可以通過JDBC-ODBC的方式,但這樣的話是不是純Java實(shí)現(xiàn)還說,倒是得為要訪問的DBF文件建一個(gè)數(shù)據(jù)源麻煩,尤其是程序移植時(shí)。 還好有一個(gè)訪問DBF文件的JDBC驅(qū)動(dòng)可以用,那就是xBaseJ,當(dāng)前版本是v2.1 (試用版下載地址http://www.americancoders.com,已解除時(shí)間限制包可從 http://www.blogjava.net/Files/Unmi/xdbfj21F(CrackedByUnmi).zip 下載)。xBaseJ是一個(gè)Java寫成的dBase數(shù)據(jù)庫引擎,支持dBase III、IV DBF、DBT、NDX、MDX和FPT文件,還有獨(dú)立的C/S結(jié)構(gòu)類,用于開發(fā)Java程序。不過這東西還真貴,注冊(cè)費(fèi)用是$95,是美元啦! 先可以體驗(yàn)一下xBaseJ的簡單應(yīng)用,運(yùn)行自帶的例子程序。解壓下載過來的xdbfj21F.zip文件,把其中的xBaseJ.jar加到classpath下,最好在IDE里用。然后可以運(yùn)行自帶的createDBFS.java程序,它會(huì)在當(dāng)前目錄創(chuàng)建一個(gè)數(shù)據(jù)庫文件DBFs.DBF,再執(zhí)行testread.java,需要傳入?yún)?shù)DBFs.DBF,就是剛剛生成的數(shù)據(jù)庫文件名,控制臺(tái)下可以看到輸出createDBFS程序插入的數(shù)據(jù)記錄。 但同時(shí)你也會(huì)看到試用版的xBaseJ會(huì)在控制臺(tái)下打印出過期時(shí)間(如Package Expires: 2006-04-01 Package Will Expire ),但倘若我寫的不控制臺(tái)程序,過期信息它也找不著去哪兒打印出來。并且同一進(jìn)程打開的文件數(shù)不能超過5個(gè)。 不過在Java包中這種限制相信都難不倒多少人,Java的字節(jié)碼可是能被反編譯的,下面告訴各位一下如果不讓xBaseJ過期,也不輸出過期,并且去除打開文件數(shù)量的限制。 先找著是在哪行代碼執(zhí)行后出現(xiàn)過期信息的,在testread.java源代碼中設(shè)個(gè)斷點(diǎn),就在第一次介入xBaseJ的代碼行處,aDBF = new DBF(arg[0]);。調(diào)試時(shí)你可以看到就是執(zhí)行new DBF(arg[0])后打印出過期信息的。用工具(如Java源代碼反編譯專家)反編譯出DBF.class文件,看構(gòu)造函數(shù)DBF(String s)就可以追溯到是private void A600000(String s)方法中打印出來的信息,并對(duì)打開文件數(shù)作的限制。其實(shí)打開的源文件,只要查到一下輸出信息,比如“Package Expired”就能直接找到在哪里輸出的。 找到了在哪里就好辦了,把約束給解除掉啊,注釋掉你不想要的東西,例如,把下面兩塊代碼注釋掉就行了 第一塊是:去除時(shí)間限制,不打印提示信息 Calendar calendar = Calendar.getInstance(); 第二塊是:去除同一進(jìn)程打開文件數(shù)量限制 results++; 編譯這個(gè)DBF類,把生成的DBF.class替換掉原來xBaseJ.jar包中的該文件就行了,就這么簡單。如果大家對(duì)這種方式侵權(quán)無太多的顧慮的話就可以這樣用它。 大家反編譯xBaseJ的字節(jié)碼是也會(huì)注意到,他們發(fā)布的時(shí)候還有意把類、方法、變量命名給混淆了一下,但這絲毫不會(huì)影響作這種簡單的Crack。 對(duì)xBaseJ使用上更多的介紹可以參數(shù)下載的xdbfj21F.zip中幫助文檔,或運(yùn)行一下所帶的其他例子程序,參看網(wǎng)站http://www.americancoders.com/xBaseJ2.1/index.html可以獲取到更多的信息。 例如:提供了SWING圖形界面創(chuàng)建DBF文件,瀏覽、增、刪、改DBF文件中的記錄,還允許通過RMI的方式遠(yuǎn)程訪問DBF文件。還有更多的附加支持包可供下載。 DBF Beans http://www.americancoders.com/xBaseJ2.1/makeDBFbean.zip 簡化你的代碼讀取DBF文件和創(chuàng)建Javabean |
聯(lián)系客服