指定的DSN包含驱动程序和应用程序错误之间的体系结构不匹配

时间:2013-06-02 00:24:42

标签: java jdbc odbc sqlexception dsn

所以我已经做了几个小时的试验和错误,并试图弄清楚这个错误意味着什么。据我所知,它是由ODBC驱动程序的位体系结构和Microsoft Access(我试图用Java连接)之间的差异引起的。 MS Access是一个32位程序,所以我使用SysWOW64 odbcad32.exe来创建DSN。这是我的连接Java代码:

String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
String url = "jdbc:odbc:bukkitdb";
String username = "root";
String password = "root";

try {
    Class.forName(driver);
} catch (ClassNotFoundException e) {
    Bukkit.broadcastMessage("ClassNotFoundException");
}

try {
    Connection conn = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
    Bukkit.broadcastMessage(e.getMessage());
}

我已经看过很多关于如何创建这些连接的教程和示例。我几乎肯定这个代码没有任何重大缺陷。运行时,e.getMessage()将标题中的SQLException发送到控制台:指定的DSN包含驱动程序和应用程序之间的体系结构不匹配。

任何有助于弄清楚我能做些什么来解决这个问题的人都会非常感激;我今天浪费了太多时间试图解决这个问题。

1 个答案:

答案 0 :(得分:0)

不幸的是,您需要在32位JVM上运行应用程序以避免这种情况。 ODBC驱动程序体系结构必须与JRE的体系结构匹配。

以下是有关运行32位JRE的一些信息:Running 32bit JRE on a 64bit windows 2008R2 server