Java连接到Access数据库

时间:2013-11-13 19:42:58

标签: java ms-access odbc relational-database

我试图能够访问来自访问数据库的数据。

我已在ODBC管理器下为* .mdb和* .accdb文件配置了odbc驱动程序。我通过并行使用Windows 7(不确定这是否有所不同)

当我运行程序时,我收到以下错误:

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no     default driver specified
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6964)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7121)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3080)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at DataAccess.main(DataAccess.java:13) 

开始代码:

import java.sql.*;

public class DataAccess 
{
public static void main(String[] args)
{
    try
    {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        String connURL = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+"C:\\Users\\alexmac\\Desktop\\OASDatabase\\OAS_Database";

            String table = "Student";        
            Connection conn = DriverManager.getConnection(connURL, "", "");
        Statement s = conn.createStatement();

              // Fetch table
        String selTable = "SELECT * FROM " + table;
        s.execute(selTable);
        ResultSet rs = s.getResultSet();
        while((rs!=null) && (rs.next()))
        {
            System.out.println(rs.getString(1) + " : " + rs.getString(2));
        }

        // close and cleanup
        s.close();
        conn.close();
    }
    catch(Exception ex)
    {
        ex.printStackTrace();
    }
}
}

1 个答案:

答案 0 :(得分:1)

除了上面评论中提到的双重扩展问题(.accdb.accdb)之外,您的代码因为您指定的驱动程序名称而无法正常工作...

DRIVER={Microsoft Access Driver (*.accdb)}

...不正确。没有具有该名称的ODBC驱动程序。想要打开较旧的.mdb数据库文件的32位应用程序可以使用

Driver={Microsoft Access Driver (*.mdb)}

要从64位应用程序打开.mdb文件,或从任何应用程序打开.accdb文件,您需要使用

Driver={Microsoft Access Driver (*.mdb, *.accdb)}