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