java - 无需 ODBC 驱动程序即可读取 MS Access 数据库

标签 java database ms-access 64-bit

我在尝试更新一些代码时遇到了一个非常烦人的问题。相关代码从本地 MS Access 文件 (*.mdb) 读取一些(实际上很多)信息,然后对这些数据执行多个操作(只是简单的操作)。请记住,我只需要读取数据库,仅此而已。

问题是我正在尝试部署此程序以在 x64 操作系统(主要是 win7)中工作,但无法 Access 32 位 ODBC 驱动程序。

这是 Access 数据库的代码部分,变量“path”是一个字符串,包含mdb文件的绝对路径,正如我所说,这个文件是本地的。

public void openConection()
{
    try
    {
        Properties props = new Properties();
        props.put ("charSet", "ISO-8859-1");
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        String dbURL = "jdbc:odbc:Driver={Microsoft AccessDriver (*.mdb)};DBQ=";
        dbURL += this.path + ";DriverID=22;READONLY=false)";
        this.connection = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft AccessDriver (*.mdb)};DBQ=" + this.path, props);
        this.statement = this.connection.createStatement();
        System.out.println("Success");
    }catch(Exception e)
    {
            System.out.println("Error :" + e);
    }
}

这会引发以下错误:

[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

问题(据我所知)出在这段代码中:

("jdbc:odbc:Driver={Microsoft AccessDriver (*.mdb)};DBQ=" + this.path, props

如果我是正确的,这会尝试将 java jdbc 桥接到 MS Access ODBC,这是一个 32 位驱动程序,因此程序无法 Access 。我尝试用谷歌搜索我的问题,但没有找到任何可以帮助的东西,我确实找到了 64 位 MS Access 驱动程序,但它需要卸载 32 位版本的 Office。

此外,我希望避免为此创建 DSN,因为该程序必须提供给很多不知道如何执行此操作的人。

谢谢。

泽格皮

最佳答案

您可以尝试使用 Java API 直接从文件中读取。那里有几个图书馆。

您可以尝试Jackcess 。它是免费的。

关于java - 无需 ODBC 驱动程序即可读取 MS Access 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12572938/

相关文章:

java - 将 OpenCv DCT 转换为 Android

java - 验证用户名和加盐密码

java - 连接两个 .csv 文件

mysql - 我应该将子帖子标记为删除还是主帖子就足够了?

sql - 列出一名员工的所有列(dept、emp、salgrade)

ms-access - Access 组合框值

java - Android 工具栏无法正常工作

ms-access - ADO 数据类型的限制是什么?

sql - 如何选择 WHERE .. IN 子句中每个元素的前 n 个结果

java - 尽管我正在声明布局管理器,但为什么没有调用 paintComponent(Graphics)