我有這個確切的問題我自己。因此很明顯,NTX文件是一種專有格式和suce開源xBaseJ不能使用它們,如果你不」 t想要更新任何索引它的工作,否則你必須找到另一種解決方案...幸運的是,我有一個工作對我來說:
注意:這可能有點不同,在Mac上,我不知道因爲我沒有自己的一個,但是如果你需要的話我可以確定它們之間的差異,在Linux上它也可能不同,我的Linux機器已經死了,所以我無法測試它恐怕,我只有需要在Windows上完成這項工作。
(1)收集資源: 去這裏:http://devzone.advantagedatabase.com/dz/content.aspx?Key=20&Release=19 下載數據架構師工具和ODBC驅動程序(一個與其他車手也可以工作,但如果你想使用JDBC驅動程序,你必須實際購買的優勢數據庫服務器,ODBC驅動程序是免費的,您的選擇)
(2)描述數據庫: 現在打開數據架構工具並創建一個新的數據字典(文件菜單)。選擇本地服務器作爲服務器類型,將數據庫設置爲包含DBF的文件夾。在你的新詞典中右擊表格並選擇「Add Existing」,在打開的對話框中從類型下拉列表中選擇DBF表格(默認隱藏它們)並選擇你的dbfs。選擇Clipper作爲表格類型,然後按OK鍵。接下來,右鍵單擊每個表並選擇添加現有索引,併爲其使用NTX索引。現在,如果您使用數據架構師編輯文件,它將更新索引。 (3)設置ODBC驅動程序 轉到「數據源(ODBC)」(在Windows的控制面板中),然後單擊系統DSN選項卡,然後單擊添加,選擇Advantage,簡化SQL ODBC,爲其提供一個名字(這個名字將在代碼中使用,所以要麼需要是靜態的,要麼放在一個配置文件中/作爲參數傳遞),勾選「數據字典」並瀏覽到步驟(2)創建的.ADD文件在相同的文件夾DBFS:
表類型=快船 優勢鎖定=兼容 可用的服務器類型=(只選擇本地服務器[ALS],除非你買的實際利用服務器)
其餘的選項應該是(我沒有提到的選項不應該有所作爲。
(4)一些示例Java代碼的
String dbfConnectionUrl = "jdbc:odbc:SML_ODBC"; //Set the ODBC URL
Connection dbfCon = null; //A connection
PreparedStatement dbfUpd = null; //I am using a prepared statement here but jsut regular statements work just as well
dbfCon = DriverManager.getConnection(dbfConnectionUrl); //Connect to the database, NOT the DBF, the database is the folder containing all the DBFs
dbfUpd = dbfCon.prepareStatement("UPDATE DBFName SET OPENVOL = ?, SLPERVOL = 0, TFPERVOL = 0 WHERE SCAN = ? AND STORE = ?"); //Then use regular old SQL same as any other JDBC driver, note that you use the name of the DBF (.DBF not needed) as the table names.
//Setting my variables
dbfUpd.setBigDecimal(1, 10);
dbfUpd.setString(2, "0000000000001");
dbfUpd.setString(3, "02"));
dbfUpd.executeUpdate(); //Update
很明顯,你可以很愉快地使用如下語句"INSERT INTO myDBF (RUT, RS, TIPO, TDOC) VALUES ('123456', 'SomeCompany', '2', '6');"
做你的榜樣。
所以在初始設置後,它真的很容易:)希望這會有所幫助,因爲花了我幾個月的時間才找到這個解決方案,我還沒有遇到任何其他使用Java中的NTX索引的方法。
添加您的代碼以瞭解問題 – 2013-02-26 17:17:28
感謝@Real現在進行了編輯。 – RicardoGonzales 2013-02-26 17:25:12