在java中连接到MS访问数据库

时间:2017-01-05 15:19:17

标签: java ms-access jdbc-odbc

我正在尝试将一些数据输入到微软访问数据库中,但我总是得到同样的错误。这是我的代码:

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时,我发现enter image description here

所以似乎我有一个64位版本的ODBC ...

1 个答案:

答案 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。)

相关问题