java - 从 Java 访问 Visual FoxPro 数据库

标签 java jdbc dbf visual-foxpro

一周以来,我一直在尝试从 Java 访问 Visual Fox Pro 数据库。我越来越绝望,因为我的项目预算和时间都非常有限。 (我猜和任何其他项目一样,哈哈哈)

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

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

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

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

还发现了这个Example to access a dbf .但我的测试显示此异常:java.sql.SQLException: [Microsoft][Controlador ODBC dBase] La tabla externa no tiene el formato esperado. 我想这个错误的英文翻译可能是这样的:java.sql.SQLException: [Microsoft][ODBC dBase Driver] External table is not in the expected format

因为那个错误,我想我需要一个更新的驱动程序。在 this microsoft page说他们不再有 ODBC 驱动程序,每个人都应该使用 OLE DB Provider。问题是我还没有找到从 java 中使用它的方法。

据我所知,there is no way直接去做。找到here有人谈论 JACOB“东西”,有人评论说需要创建 C++ 或 C#“东西”才能完成我需要的事情。我认为他在谈论 The JACOB Project: A JAva-COM Bridge .但我也不知道实际上必须进行哪些 COM 调用。

未能找到合适的 JDBC 驱动程序。

谢谢大家

伊利。

最佳答案

我找到了方法。

我最终使用了 JACOB(from here <= upd 2021-10-25: now here)。

  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 构建路径库
  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\\;Collat​​ing Sequence=general;";
  9. 更改了 queryStr 以匹配 dbf 的名称之一

希望这对其他人有帮助。

关于java - 从 Java 访问 Visual FoxPro 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21856285/

相关文章:

Python 2.7-从csv读取数据并写入字段名称大于10个字符长的Vfp dbf

mysql - 如何在 Linux 中运行/执行 Visual FoxPro(sistem.exe 文件)?

c# - Java 中 Calendar.get() 方法的 C# 等效项是什么?

Java 连接到数据库

java - Java中是否可以@Query两个微服务数据库?

java - 使用 Postgres 和 Wicket 框架避免将重复的用户名插入数据库

python - 从 dbf 文件中选择字段

java - 自定义 Log4j2 包装器和输出

java - 使用 Canvas android拉伸(stretch)图像

java - 请求过滤器在 Jersey 2 on Embedded Jetty 中不起作用