我正在尝试将一些数据输入到微软访问数据库中,但我总是得到同样的错误。这是我的代码:
import java.sql.Connection;
import java.sql.DriverManager;
public class testDDB {
public static void main(String[] args) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String filename = "C:\\test\\Database1.mdb";
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=";
database+= filename.trim() + ";}"; // add on to the end
Connection con = DriverManager.getConnection( database ,"","");
}catch(Exception e){
e.printStackTrace();
}
}
我收到以下错误:
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
我查看过以前的帖子,我发现了类似的问题,但我仍然没有找到解决方案。我的电脑在64位上运行,当我转到C:\ Windows \ SysWOW64 \ obdcad32.exe时,我发现
所以似乎我有一个64位版本的ODBC ...
答案 0 :(得分:1)
当我转到C:\ Windows \ SysWOW64 \ obdcad32.exe时,我发现
| MS Access数据库... Microsoft Access驱动程序(* .mdb,* .accdb)
所以似乎我有一个64位版本的ODBC
文件夹名称“SysWOW64”可能有点误导。它包含 32位“WOW”子系统的组件(即“[32位] Windows On Windows [64]”)。
因此,“SysWOW64 \ obdcad32.exe”实际上是 32位 ODBC管理员,实际上您安装了32位版本的Access“ACE”ODBC驱动程序。因此,您需要在32位版本的JRE(Java运行时环境)下运行应用程序才能使用该ODBC驱动程序。
另外,请记住,JDBC-ODBC Bridge已从Java 8中删除,因此您的JRE必须适用于Java 7或更早版本。 (对于Java 8及更高版本,请考虑使用UCanAccess JDBC驱动程序。详细信息here。)