从数据库中检索记录的程序
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]
根据评论进行修改
我得到的例外是
SQLException:[Microsoft] [ODBC驱动程序管理器]指定的DSN包含驱动程序和应用程序之间的体系结构不匹配
答案 0 :(得分:1)
基于此错误:
java.sql.SQLException: [Microsoft][ODBC Driver Manager] The specified DSN contai ns an architecture mismatch between the Driver and Application
问题是您的Java架构可能基于64位,但是当您通过此路径访问Odbcad32.exe
时:
%windir%\SysWoW64\odbcad32.exe
您实际上是在访问32位版本的ODBC控制器。因此,您遇到了架构不匹配问题。有关详细信息,请查看此answer。
要使其工作,您必须确保Java,DSN和MS ODBC驱动程序都是32或64位的相同体系结构。
所以你可以:
%windir%\System32
文件夹访问DSN(是
64位版本)并在那里创建数据源。答案 1 :(得分:-2)
当您没有收到Java异常/错误且没有输出时,您似乎可以连接到数据库,它根本不包含任何数据。