Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 读取不带OBDC驱动程序的MS Access数据库_Java_Database_Ms Access_64 Bit - Fatal编程技术网

Java 读取不带OBDC驱动程序的MS Access数据库

Java 读取不带OBDC驱动程序的MS Access数据库,java,database,ms-access,64-bit,Java,Database,Ms Access,64 Bit,我在尝试更新一些代码时遇到了一个非常恼人的问题。所讨论的代码从本地MS access文件(*.mdb)读取一些(实际上是很多)信息,然后对这些数据执行一些操作(只是简单的东西)。请记住,我只需要阅读数据库,仅此而已 问题是,我正在尝试将此程序部署到x64操作系统(主要是win7)中,而我无法访问32位ODBC驱动程序 这是访问db的代码部分,变量“path”是一个字符串,包含mdb文件的绝对路径,正如我所说的,这个文件是本地的 public void openConection() {

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

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

这是访问db的代码部分,变量“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

您可以尝试使用javaapi直接读取文件。外面有好几个图书馆


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

怎么样?只需使用32位Java虚拟机运行您的程序即可。这将能够访问32位ODBC驱动程序。Remou,我不能使用这些驱动程序,因为它们要求我卸载32位版本的office,我不能这样做。一匹没有名字的马,我找不到让netbeans以32位运行的方法,我甚至用32位版本的JDK重新安装了所有东西,但都没有用。这正是我想要的,我会尽快尝试。非常感谢。我会让你知道(并接受答案),只要我知道它的工作。我终于有时间测试它,它的工作。非常感谢。