我正在尝试将Java中的DBF文件用于与较旧的旧系统交互的较新实用程序。我能够使用Java ODBC桥访问,读取,写入和更新,但这不会更新NTX索引。我发现xbasej声称能够使用索引,但似乎只能使用NDX索引。我总是可以在使用它们之前创建它们但是它仍然不会更新所有其他程序使用的NTX。有几千个程序在这里进行交互,所以只能切换到NDX,我没有预算。
所以我的问题是:有没有办法让xbasej使用NTX索引或失败那是否有任何其他免费的Java库可以自动更新NTX文件,如果我在编辑数据库之前打开它们全部?
哦,我已经转发了端口6262,甚至完全关闭了我的防火墙。
非常感谢任何帮助。
我找到了Sybase Advantage驱动程序link哪些可以显然打开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帮助文件,我已经浏览过但没有找到任何内容。
有一个测试人员应用程序可以让你测试连接,但仍然要求我输入我的连接字符串,用户名和密码,既不通过数据字典也不通过自由表我能连接任何东西,我总是得到同样的错误。
有没有人知道如何让这个工作。它通过他们的数据架构工具工作的事实证明它应该以某种方式工作,但我确切地知道如何复制该功能,我不知道。
答案 0 :(得分:3)
Advantage JDBC驱动程序需要Advantage Database Server,它是产品的客户端 - 服务器版本。基于评论“没有预算”,我猜你没有购买服务器。如果是这种情况,则JDBC驱动程序对您没有任何用处。似乎发生了Connection refused
错误,因为没有服务器可以接受连接。
如果您能够使用ODBC桥接,那么就有可能使用Advantage ODBC驱动程序,它可以连接到Advantage Local Server(非客户端 - 服务器版本,根据您的使用情况免费提供...阅读许可证)。您应该能够安装Advantage ODBC驱动程序,设置指定数据字典的数据源(使用与Advantage Data Architect一样的路径)。
您可能已经这样做了,但是当您创建数据字典并添加表时,请确保为每个表添加了相应的.ntx文件。 Advantage无法确定哪些索引属于哪个表。