我一直在尝试通过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并且必须让它运行起来。答案 0 :(得分:3)
你看过Access 2010的驱动程序了吗?它们与我读过的64位一样工作。
答案 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管理员并在那里定义数据源。它应该工作......