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

时间:2010-02-26 21:08:43

标签: jdbc ms-access-2007

我一直在尝试通过JDBC连接到MS Access 2007数据库。我的JDK是JDK 1.6u18 64位,操作系统是Windows 7 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并且必须让它运行起来。

4 个答案:

答案 0 :(得分:3)

你看过Access 2010的驱动程序了吗?它们与我读过的64位一样工作。

http://www.microsoft.com/downloads/details.aspx?FamilyID=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=ja&displaylang=en

答案 1 :(得分:1)

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

为了设置ODBC连接,我不得不使用你可以在c:\ windows \ sysWOW64 \ odbcad32.exe中找到的32位版本的odbcad32.exe,就像你一样。我从这里得到了我的信息:http://msdn.microsoft.com/en-us/library/ms712362%28v=vs.85%29.aspx

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

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

我希望这会有所帮助。

答案 2 :(得分:1)

如果你在运行Windows 7时遇到JDBC错误,如上所述,你安装的是Java 64位而不是坚持32位。因此,安装Java 6 32位JVM,一切恢复正常。这样就可以像以前一样运行普通的32位MS Access。

答案 3 :(得分:0)

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