Java 指定的DSN包含驱动程序和应用程序之间的体系结构不匹配
我正在尝试连接到使用Java的MS Access制造的数据库,但似乎无法管理。我正在使用ODBC,并且遇到了以下异常:
java.sql.SQLException:[Microsoft] [ODBC驱动程序管理器]指定的DSN包含驱动程序和应用程序之间的体系结构不匹配
我的Java:
package javaapplication2;import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
*
* @author Owner
*/
public class JavaApplication2 {
/**
* @param args the command line arguments
*
*/
public static void main(String[] args) {
// TODO code application logic here
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String sourceURL = new String("jdbc:odbc:myDatabase");
System.out.println(sourceURL);
Connection dbConnection = DriverManager.getConnection(sourceURL,"admin","");
Statement myStmt = dbConnection.createStatement();
String query = "INSERT INTO People(ID, Name, Surname, Age, Contact, Location, Course) VALUES"
+ " (1007, 'Elroy', 'Smith', '33', 21366688, 'Somewhere', 'somecourse')";
myStmt.executeUpdate(query);
ResultSet results = myStmt.executeQuery("SELECT * FROM People");
while(results.next())
{
System.out.print(results.getString(1));
System.out.print(results.getString(2));
System.out.print(results.getString(3));
System.out.println(results.getString(4));
}
results.close();
}
catch(ClassNotFoundException cnfe)
{
System.out.println(cnfe);
}
catch(SQLException sqle)
{
System.out.println(sqle);
}
}
}
回答:
我确实在MSDN上找到了答案。虽然有暗示。错误中的体系结构是指32位和64位。我的解决方案是找出我的应用程序在(访问)2010 b为32b的情况下运行。我通过在任务管理器的“进程”选项卡中查找所有32b进程的名称末尾带有* 32的字符来发现此问题。如前所述,控制面板将从此处启动64位版本的ODBC
c:\windows\system32\odbcad32.exe
这里是32位版本:
c:\windows\sysWOW64\odbcad32.exe
(最容易复制并粘贴到运行对话框中)
因此,我在每个指向相同内容的ODBC控制面板(AKA管理员)中设置了以32和64结尾的名称的DSN。然后,我根据使用它的应用程序是32b还是64b来选择/选择正确的。
以上是 Java 指定的DSN包含驱动程序和应用程序之间的体系结构不匹配 的全部内容, 来源链接: utcz.com/qa/415001.html