我正在尝试将 Java 中的 DBF 文件用于与大型旧系统交互的新实用程序。我可以使用 Java ODBC 桥接器访问、读取、写入和更新,但这不会更新 NTX 索引。我发现 xbasej 声称能够使用索引,但似乎只能使用 NDX 索引。我总是可以在使用它们之前创建它们,但它仍然不会更新所有其他程序使用的 NTX。这里有几千个程序在交互,所以只切换到 NDX 是不可能的,我也没有预算。
所以我的问题是:有没有办法让 xbasej 使用 NTX 索引,或者如果我在编辑数据库之前打开它们,是否有任何其他免费的 Java 库可以自动更新 NTX 文件?
哦,我已经转发了 6262 端口,甚至在完全关闭防火墙的情况下进行了测试。
任何帮助将不胜感激。
我找到了 Sybase Advantage 驱动程序链接,它显然可以打开 DBF 和 NTX 文件,我可以使用他们的 Data Architect 程序创建一个数据字典来访问我的数据,但我不知道如何从 Java 中使用它,所有的例子似乎需要某种服务器连接。像这样的东西应该工作:
try {
Class.forName("com.extendedsystems.jdbc.advantage.ADSDriver");
} catch (ClassNotFoundException ex) {
Logger.getLogger(DBFTest.class.getName()).log(Level.SEVERE, null, ex);
}
try {
ADSConnection conn = (ADSConnection) DriverManager.getConnection("jdbc:extendedsystems:advantage://localhost:6262;catalog=//llama-rog/c/stock/DD.add;user=master;password=master");
}catch (SQLException ex) {
Logger.getLogger(DBFTest.class.getName()).log(Level.SEVERE, null, ex);
}
}
每次我尝试连接时,我都会得到:
com.extendedsystems.jdbc.advantage.ADSException: [iAnywhere Solutions][Advantage JDBC]Connection refused: connect
at com.extendedsystems.jdbc.advantage.n.<init>(Unknown Source)
at com.extendedsystems.jdbc.advantage.ADSConnection.<init>(Unknown Source)
at com.extendedsystems.jdbc.advantage.ADSDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:243)
at dbftest.DBFTest.main(DBFTest.java:30)
我已经搜索了几个小时并且完全没有找到任何示例代码来连接到本地唯一的数据字典(.add),其中列出了我的 DBF 和相关索引。有人提到使用 Data Architect 在 ADS.ini 中创建的别名,但同样没有任何关于如何执行此操作的痕迹。Jar 文件没有附带 javadoc,只有一些 HTML 帮助文件,我翻遍了却一无所获。
有一个测试应用程序据说可以让你测试连接,但仍然需要我输入我的连接字符串、用户名和密码,而且我既不能通过数据字典也不能通过空闲表连接到任何东西,我总是得到同样的错误。
有谁知道如何让它工作。它通过他们的数据架构工具工作的事实证明它应该以某种方式工作,但我不知道我究竟如何复制该功能。