无法通过Win 7 64位上的JDBC连接到MS Access数据库

无法通过Win 7 64位上的JDBC连接到MS Access数据库,jdbc,ms-access-2007,Jdbc,Ms Access 2007,我一直在尝试通过JDBC连接到MS Access 2007数据库。我的JDK是JDK1.6u18 64位,操作系统是Windows7 64位。但问题是我无法使用Windows\system32\odbcad32.exe创建DSN,因为它根本不显示MS Access的ODBC驱动程序,只显示MS SQL Server的驱动程序 尝试单击“MS Access数据库”(我想这是一个已创建的DSN)的配置时,首先显示错误消息:“找不到Microsoft Access驱动程序(*.mdb,*.accdb)

我一直在尝试通过JDBC连接到MS Access 2007数据库。我的JDK是JDK1.6u18 64位,操作系统是Windows7 64位。但问题是我无法使用
Windows\system32\odbcad32.exe
创建DSN,因为它根本不显示MS Access的ODBC驱动程序,只显示MS SQL Server的驱动程序

尝试单击“MS Access数据库”(我想这是一个已创建的DSN)的配置时,首先显示错误消息:“找不到Microsoft Access驱动程序(*.mdb,*.accdb)ODBC驱动程序的安装例程。请重新安装驱动程序。” 然后是另一条消息:“发现错误!指定的DSN包含驱动程序和应用程序之间的架构不匹配。”

我无法重新安装MDAC,因为它不能与Windows 7(自带WDAC)一起使用

Windows\SysWOW64
中的odbcad32.exe允许我为MS Access创建DSN,它显示正确安装的驱动程序。但是,当尝试通过Java程序连接到该DSN时,我遇到以下异常:

java.sql.SQLException: [Microsoft][ODBC Driver Manager] The specified DSN contains
an architecture mismatch between the Driver and Application
            at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
            at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
            at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
            at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
            at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
            at java.sql.DriverManager.getConnection(Unknown Source)
            at java.sql.DriverManager.getConnection(Unknown Source)
            at AccessTest.main(AccessTest.java:19)
可能有什么问题?我要做什么才能让它工作?我的操作系统和JDK都是64位的。我不能连接到Access 2007数据库吗?我假定它是32位的?任何帮助都将不胜感激。另外,如果有人认为这里不适合回答这个问题,我提前道歉。那么请引导我到合适的论坛

另一个选择是为MS Access找到第三方JDBC驱动程序。但我确实需要知道我的配置有什么问题:-/


PS:我知道有很多更好的数据库可用,但出于一些不幸的原因,我只能使用MS Access,并且必须让它工作。

你看过Access 2010驱动程序吗?它们使用我读到的64位


如果jvm是64位的,则需要64位ODBC驱动程序。使用从控制面板访问的64位odbc管理员,并在其中定义数据源。它应该可以工作…

这个问题我也有一段时间了,我终于找到了一个解决方案,所以这里是给其他人的

为了设置ODBC连接,我必须使用32位版本的odbcad32.exe,您可以在c:\windows\sysWOW64\odbcad32.exe中找到它,就像您所做的那样。我从这里得到了我的信息:

就像你一样,一旦我这样做了,我的连接仍然会出现架构不匹配错误

我想既然驱动程序是32位驱动程序,我可以尝试使用32位JVM运行我的应用程序。因此,我下载了JRE 6U26 32位版本,一切都开始正常工作


我希望这会有所帮助。

如果您在运行上述Windows 7时在JDBC上出现错误,那么您安装的是64位Java,而不是32位。因此,安装Java6 32位JVM,一切都恢复正常。这是因为您可以像以前一样运行正常的32位MS访问。

如果您没有按照@Remou的建议进行操作,这对您没有任何好处。