当我编写连接代码时,我尝试使用jdbc-odbc桥将我的java程序连接到Access数据库,此异常被抛出,我无法解决问题
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:6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3073)
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:582)
at java.sql.DriverManager.getConnection(DriverManager.java:207)
at jdbc.TestAccesDBCon.getConnection(TestAccesDBCon.java:44)
at jdbc.TestAccesDBCon.main(TestAccesDBCon.java:21)
这是我的代码:
public static void main(String[] args) throws Exception {
Connection conn = getConnection();
Statement st = conn.createStatement();
st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM users");
ResultSetMetaData rsMetaData = rs.getMetaData();
int numberOfColumns = rsMetaData.getColumnCount();
System.out.println("resultSet MetaData column Count=" + numberOfColumns);
st.close();
conn.close();
}
private static Connection getConnection() throws Exception {
String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
String connectionString = "jdbc:odbc:Driver= " +
"{Microsoft Access Driver (*.accdb)};DBQ=TestDB.accdb;DriverID=01";
Class.forName(driver);
return DriverManager.getConnection(connectionString);
}
为什么抛出此异常?请帮忙吗?
答案 0 :(得分:3)
似乎您没有安装ODBC访问驱动程序(安装Access时ODBC驱动程序是可选的!),尝试从Access安装介质安装驱动程序,如果您使用的是64位系统,则应安装64位版本的驱动程序。
如果您在控制面板下的管理工具中进入ODBC管理器GUI,则无法在源选项卡下找到源:
Microsoft Access Driver (*.accdb)
这意味着您的系统上未安装驱动程序,您需要安装它。
您可以从here下载Access 2010驱动程序。
答案 1 :(得分:1)
您可以尝试使用此代码
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String DBpath = "Your Database Path";
String driver = "jdbc:odbc:Driver={Microsoft Access Driver (*.accdb)};DBQ=";
driver += DBpath.trim() + ";DriverID=22;READONLY=true}";
Connection con = DriverManager.getConnection(driver, "", "");
Statement s = con.createStatement();
con = DriverManager.getConnection(driver, "", "");
return (Statement) s;