Java 连接到MS Access 2007时出错

Java 连接到MS Access 2007时出错,java,ms-access,jdbc,ms-access-2007,Java,Ms Access,Jdbc,Ms Access 2007,我在尝试与Access 2007数据库建立JDBC连接时出错 环境详细信息:Windows 7 64位、JRE 7 64位、Access 2007 32位: driver = "sun.jdbc.odbc.JdbcOdbcDriver"; url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+database+";"; DriverManager.getConnection(url, dbusername

我在尝试与Access 2007数据库建立JDBC连接时出错

环境详细信息:
Windows 7 64位、JRE 7 64位、Access 2007 32位

driver = "sun.jdbc.odbc.JdbcOdbcDriver";
url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+database+";";
DriverManager.getConnection(url, dbusername, dbpassword);
我得到了以下异常

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

安装32位版本的Access仅安装32位版本的Access数据库引擎。显而易见的修复方法是从下载并安装64位版本的Access数据库引擎,但如果64位安装程序检测到机器上有任何32位Office应用程序,它将退出。因此,您的选择是:

  • 切换到32位Java环境,或

  • 切换到64位版本的Access


JdbcOdbcDriver只是ODBC的桥梁。您正在使用Access 32位,因此它的ODBC为32位。您将无法在普通ODBC管理器中看到它,必须使用C:\Windows\SysWOW64\odbcad32.exe才能看到它。因此,Java64找不到它

基本上,你想做的是不可能的。您应该使用Java 32位使其运行。我认为Access 2007没有ODBC 64位,但如果使用Java 64是最重要的,您可以尝试这种方法。在任何情况下,问题的根源在于,在Windows 64中,您有两个不同的DSN集,一个用于64位,另一个用于32位,您只能使用C:\Windows\SysWOW64\odbcad32.exe查看