【问题标题】:Access Visual FoxPro database from Java从 Java 访问 Visual FoxPro 数据库
【发布时间】:2014-02-18 14:08:38
【问题描述】:

我已经尝试从 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 驱动程序。

谢谢大家。

伊利。

【问题讨论】:

    标签: java jdbc dbf visual-foxpro


    【解决方案1】:

    我找到了方法。

    我最终使用了 JACOB(from here 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\\;Collating Sequence=general;";
    9. 更改了 queryStr 以匹配 dbf 的名称之一

    希望这对其他人有所帮助。

    【讨论】:

    • 您好,您是如何设法使用该提供商的?我收到消息说没有为提供商找到合适的驱动程序。
    • 我只是按照步骤 1 中的说明安装了驱动程序。没什么特别的。
    • 您运行的是哪个 Windows 版本?我正在运行 Windows 7 64 位
    • 我在虚拟机 (VMWare) 中使用 Windows XP
    • 我已经实现了您的解决方案,感谢您的想法,它有效。但它不是那么快,在我的应用程序中,我必须进行频繁的查询,并且内存增长得非常快。我必须每小时重新启动一次。
    【解决方案2】:

    您可能会发现使用 jdbc 驱动程序来处理 foxpro 文件很有趣。 我用this one 做了一些快速测试,看起来你使用的是真正的Java 数据库。

    问候,

    【讨论】:

    • 很高兴知道。当我有时间长矛时,我会试一试。几天来我一直在寻找类似的东西,:)
    • 不幸的是它不支持 CDX 索引文件。
    【解决方案3】:

    由于jacob approach 不再像描述的那样工作,并且其他人似乎在没有 OLE DB 桥的情况下工作,我取消了在那里的尝试并通过hxtt.com 驱动程序成功地做到了:

    1. 用一些电子邮件注册,邮寄的链接包含一些密码,可以进入驱动程序页面
    2. 那里可以下载正确的驱动程序,例如Java 8 之前的 v42 或 Java 9 之后的 v43
    3. 在您的环境(例如 Eclipse 数据库资源管理器)中使用以下 JDBC 设置来访问您的 DBF 文件(例如您有一些 C:\foo\bar.dbf):
      • 驱动 jar:例如DBF_JDBC42_tillJava8.jar
      • 驱动类:com.hxtt.sql.dbf.DBFDriver
      • 网址:jdbc:dbf:/c:/foo/
      • (如果您的工具需要使用虚拟值:)
        • 数据库:db
        • 用户/通行证:usr/<empty pass>

    【讨论】:

    • 我不能说它是否支持cdx和/或fpt文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    • 2012-03-25
    • 1970-01-01
    相关资源
    最近更新 更多