读取没有ODBC驱动程序的MS Access数据库

时间:2012-09-24 21:06:31

标签: java database ms-access 64-bit

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

问题是我正在试图将这个程序部署到x64操作系统(主要是win7),我无法访问32位ODBC驱动程序。

这是访问数据库的代码的一部分,变量“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驱动程序管理器]未找到数据源名称且未指定默认驱动程序

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

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

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

另外,我想避免为此创建一个DSN,因为这个程序必须提供给很多不知道如何做的人。

感谢。

Zegpi

1 个答案:

答案 0 :(得分:2)

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

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