如何从64位Java连接到Access .mdb数据库?

Gur*_*lki 2 java ms-access

嗨,我有以下代码连接到Windows 7操作系统上的MS Access数据库.我已将数据源快捷方式更改为指向64位odbc然后32位.但仍然得到错误

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956)
    at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)
    at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3072)
    at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
    at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
    at java.sql.DriverManager.getConnection(DriverManager.java:579)
    at java.sql.DriverManager.getConnection(DriverManager.java:221)
    at TestDBConnection.main(TestDBConnection.java:21)
Run Code Online (Sandbox Code Playgroud)

我的代码是:

import java.sql.Connection;
import java.sql.DriverManager;

public class TestDBConnection {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try
        {
            System.out.println("filename");
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String database = 
                      "jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\\Test\\Tests.mdb";
            Connection conn = DriverManager.getConnection(database, "", "");
        } catch(Exception ex) {
            ex.printStackTrace();
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

我怎么有SQL Workbench工具,我可以通过它连接到它而不是通过java代码.

在过去3个小时在Google上搜索时,我正在努力解决这个问题.

Gor*_*son 8

如果您的Java应用程序在64位Java虚拟机(JVM)中运行,那么DRIVER={Microsoft Access Driver (*.mdb)}因为没有64位版本的Jet数据库引擎而无法运行.您可以...

  • 此处下载并安装64位版本的Microsoft Access数据库引擎,然后DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}在您的代码中使用.

... 要么 ...

  • 在32位JVM中运行Java应用程序并继续使用现有DRIVER=字符串.如果您选择此选项,此处的相关答案可能会有所帮助.

... 要么 ...

  • 对Access数据库使用UCanAccess JDBC驱动程序.它是一个免费的,开源的纯Java实现,因此它适用于32位和64位系统,包括Windows和非Windows.它也适用于Java 8(已经删除了JDBC-ODBC Bridge).有关详细信息,请参阅:

        在没有ODBC的情况下从Java操作Access数据库