Java Access数据库连接

我尝试创建与db(MS Access 2010)连接的项目我在CodeProject上使用本教程。

import java.sql.*; public class DbAccess { public static void main(String[] args) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=myDB.mdb;"; Connection conn = DriverManager.getConnection(database, "", ""); Statement s = conn.createStatement(); // create a table String tableName = "myTable" + String.valueOf((int)(Math.random() * 1000.0)); String createTable = "CREATE TABLE " + tableName + " (id Integer, name Text(32))"; s.execute(createTable); // enter value into table for(int i=0; i<25; i++) { String addRow = "INSERT INTO " + tableName + " VALUES ( " + String.valueOf((int) (Math.random() * 32767)) + ", 'Text Value " + String.valueOf(Math.random()) + "')"; s.execute(addRow); } // Fetch table String selTable = "SELECT * FROM " + tableName; s.execute(selTable); ResultSet rs = s.getResultSet(); while((rs!=null) && (rs.next())) { System.out.println(rs.getString(1) + " : " + rs.getString(2)); } // drop the table String dropTable = "DROP TABLE " + tableName; s.execute(dropTable); // close and cleanup s.close(); conn.close(); } catch(Exception ex) { ex.printStackTrace(); } } } 

但我得到奇怪的例外:java.sql.SQLException:[Microsoft] [????????? ????????? ODBC] ???????? ?????? ?? ?????? ? ?? ?????? ??????????????????????????? ?? ?????????

java.sql.SQLException:[Microsoft] [????????? ????????? ODBC] ???????? ?????? ?? ?????? ? ?? ?????? ??????????????????????????? ?? ????????? at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956)at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3072) )sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)at java.sql.DriverManager.getConnection(DriverManager.java:579) at dbaccess.DbAccess.main的java.sql.DriverManager.getConnection(DriverManager.java:221)(DbAccess.java:28)

我谷歌它,并在堆栈上找到其他问题: Stack Post

所以我添加了所有可以帮助我连接* .mdb文件的ODBC驱动程序。 但没有什么好处的。(

它是什么以及如何连接Access DB?

您的代码没有任何根本性的错误,因为我将其粘贴到Eclipse中并且运行正常。 我做的唯一更改是指定数据库文件的路径,即不使用

 DBQ=myDB.mdb 

我用了

 DBQ=C:\\__tmp\\myDB.mdb 

我也在32位JVM(在32位计算机上)下运行它。 所以,我的建议是

  1. 尝试像我一样指定.mdb文件的完整路径。

  2. 如果仍然出现错误,请检查Java环境以查看应用程序是否在64位JVM中运行。 如果是,则Driver={Microsoft Access Driver (*.mdb)}将不起作用:没有旧版Jet ODBC驱动程序的64位版本。 在这种情况下,您有两个选择:

    一世。 将应用程序配置为在32位JVM中运行,或

    II。 从此处下载并安装64位版本的Access数据库引擎,然后使用Driver={Microsoft Access Driver (*.mdb, *.accdb)}

现在已经从Java 8中删除了JDBC-ODBC Bridge,更好的方法是使用UCanAccess JDBC驱动程序。 有关更多信息,请参阅

在没有ODBC的情况下从Java操作Access数据库

JDBC程序使用“ sun.jdbc.odbc.JdbcOdbcDriver ”驱动程序连接到MS Access数据库,直到Java 1.7版本

参考: http //www.benchresources.net/jdbc-msaccess-database-connection-steps/

启动Java 1.8版本,JDBC程序使用“ net.ucanaccess.jdbc.UcanaccessDriver ”驱动程序连接到MS Access数据库

参考: http //www.benchresources.net/jdbc-msaccess-database-connection-steps-in-java-8/