指定的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包含驱动程序和应用程序之间的体系结构不匹配。

任何帮助弄清楚我能做什么来解决这个问题将非常感激;我今天浪费了很多时间想弄明白这件事。

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

在64位windows 2008R2服务器上运行32位JRE

最新更新