从Java访问Visual FoxPro数据库

6

我已经尝试了一个星期从Java访问Visual Fox Pro数据库。由于我的项目预算和时间非常紧张,我感到绝望。(像其他任何项目一样,哈哈哈)

我有一个.dbf、一个.cdx和一个.fpt文件。我需要能够查找记录、提取数据和更新数据。我没有VFP许可证。

我希望有人能给我一些指针或一个可以使用的工作示例。如果唯一的方法是购买驱动程序,我愿意考虑根据收到的建议进行。

这是我尝试过的简短描述。

我发现了这个xBaseJ: java objects to read and write to dBase files。但它不支持CDX索引文件。

还发现了这个 访问 dbf 的示例。但我的测试显示出现了以下异常:java.sql.SQLException:[Microsoft] [Controlador ODBC dBase] 外部表不符合预期的格式。 我猜翻译成英语可能是这样的:java.sql.SQLException:[Microsoft] [ODBC dBase Driver] External table is not in the expected format

因为这个错误,我认为我需要一个更新的驱动程序。在此 Microsoft 页面中说他们不再拥有 ODBC 驱动程序,每个人都应该使用 OLE DB 提供程序。问题是我还没有找到一种从 Java 中使用它的方法。

就我所知,没有直接的方法可以做到这一点。在这里找到有人谈论了一个名为JACOB "thingy"的东西,并且有人评论需要创建一个C++或C# "something"才能做到我所需的。我想他在谈The JACOB Project: A JAva-COM Bridge。但我也不知道实际上要进行哪些COM调用。

没有找到合适的JDBC驱动程序。

谢谢大家。

Ely。

3个回答

8

我找到了实现它的方法。

最终我使用了 JACOB (这里 <= 更新于 2021-10-25: 现在在 这里)。

  1. http://msdn.microsoft.com/en-US/vfoxpro/bb190232 下载并安装Visual FoxPro OLE DB驱动程序 (更新于 2021-10-25: 那里的链接不再有效)。直接链接是: Microsoft OLE DB Provider for Visual FoxPro 9.0 SP2 (更新于 2021-10-25: 不再有效)
  2. 下载JACOB版本1.17二进制和源代码。
  3. jacob.jar添加为Java Build Path库
  4. jacob-1.17-x86.dll复制到项目目录中(与eclipse的.project文件相同的位置)
  5. jacob-1.17_src\jacob-1.17\samples\com\jacob\samples\ado的内容复制到我的src目录中,并:
  6. 删除ms目录
  7. test.java重命名为Main.java
  8. 更改连接字符串为: String connectStr = "Provider=vfpoledb;Data Source=C:\\path\\to\\Data\\;Collating Sequence=general;";
  9. 更改queryStr以匹配dbf之一的名称

希望这能帮助其他人。


我按照第一步的描述安装了驱动程序。没有什么特别的。 - elysch
你使用的是哪个Windows版本?我正在使用64位的Windows 7。 - gmemario
我正在虚拟机(VMWare)中使用Windows XP。 - elysch
如果我能使用jacob jar,驱动程序的类名是什么? - karthik
抱歉,不知道。 - elysch
显示剩余2条评论

1

由于jacob方法不再像描述的那样起作用,而其他方法似乎在没有OLE DB桥接的情况下也可以运行,因此我取消了尝试,并成功地通过hxtt.com驱动程序完成了操作:

  1. 使用某个电子邮件注册,并通过邮件中的链接获取密码,以便访问驱动程序页面。
  2. 在那里可以下载适当的驱动程序,例如v42(适用于Java 8)或v43(适用于Java 9)。
  3. 在您的环境中(例如Eclipse数据库浏览器)使用以下JDBC设置来访问您的DBF文件(例如,您有一些C:\foo\bar.dbf):
    • 驱动程序jar:例如DBF_JDBC42_tillJava8.jar
    • 驱动程序类: com.hxtt.sql.dbf.DBFDriver
    • URL:jdbc:dbf:/c:/foo/
    • (如果您的工具需要,则使用虚拟值):
      • 数据库:db
      • 用户/密码:usr / <empty pass>

我无法确定它是否支持 cdx 和/或 fpt 文件。 - Andreas Covidiot

0

你可能会发现使用jdbc驱动程序来处理foxpro文件很有趣。

我用this one做了一些快速测试,它几乎看起来像是在Java中使用真正的数据库。

祝好!


很好了解。等我有空的时候,我会试一试。我已经找了好几天类似的东西了,:) - elysch
很遗憾,它不支持CDX索引文件。 - sax

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接