为什么我的代码不断获取java.sql.SQLException:[Microsoft] [ODBC驱动程序管理器]找不到数据源名称并且没有指定默认驱动程序?

时间:2015-05-31 16:08:15

标签: eclipse ms-access jdbc-odbc

有人可以帮助我让我的数据库连接到java。 我已经尝试了几个小时,但我仍然有这个例外:“java.sql.SQLException:[Microsoft] [ODBC Driver Manager]找不到数据源名称,没有指定默认驱动程序?”

public Connector() {
      Connection con;
      Statement st;
    try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        con = DriverManager.getConnection("jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Database.mdb");
        st = con.createStatement(1004, 1008);
    } 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)

1 个答案:

答案 0 :(得分:2)

您的Java代码在64位JVM(Java虚拟机)下运行,并尝试使用旧的" Jet" ODBC驱动程序Microsoft Access Driver (*.mdb)。这不会起作用,因为年龄较大的" Jet"驱动程序仅适用于32位应用程序。你需要

  1. 在32位JVM下运行Java程序,或

  2. 下载并安装64位版本的新版" Access数据库引擎(' ACE')"从here开始,然后在64位JVM下运行代码时使用ODBC驱动程序名称Microsoft Access Driver (*.mdb, *.accdb)

  3. 另外,请记住JDBC-ODBC Bridge已从Java 8中删除,因此继续使用它并不是非常友好的#34;。有关替代方案,请参阅

    Manipulating an Access database from Java without ODBC