【发布时间】:2014-02-24 13:52:48
【问题描述】:
从数据库中检索记录的程序
import java.sql.*;
import javax.sql.*;
public class Database
{
public static void main(String a\[\])
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection cn =DriverManager.getConnection("jdbc:odbc:data");
Statement st=cn.createStatement();
ResultSet rs= st.executeQuery("select * from student ");
while(rs.next())
{
int r=rs.getInt(1);
String n= rs.getString(2);
int m=rs.getInt(3);
System.out.println("Roll Name Marks");
System.out.println(r+" "+n+" "+m);
}
cn.close();
}
catch(Exception e)
{
}
}
}][1]
我正在运行 64 位 Windows 7 从 sysWOW64 文件夹创建 DSN 有一个由 3 个字段组成的数据库 Roll Name Mark 编译后没有发现错误 执行程序没有输出 为什么我无法执行程序
![在命令行无输出][1]
从 cmets 编辑
我得到的例外是
SQLException: [Microsoft][ODBC Driver Manager] 指定的 DSN 包含驱动程序和应用程序之间的体系结构不匹配
【问题讨论】:
-
在catch块中使用e.printStackTrace(),看看有没有异常。
-
您可能在运行时遇到异常,但由于
catch块为空,您看不到它。您必须确保 Java、DSN 和 MS ODBC 驱动程序都是相同的 32 位或 64 位架构。否则你会遇到兼容性问题。 -
这是输出 java.sql.SQLException: [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application
-
这就是我要说的。您的 Java 架构可能是 64 位,但通过 sysWOW64 访问 DSN 是 32 位 ODBC 控制器(如果我没记错的话)。因此,您会遇到架构不匹配的问题。
-
那么需要什么解决方案