我尝试创建与db连接的项目(MS Access 2010) 我使用本教程on 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] ???????? ?????? ?? ?????? ? ?? ?????? ????????????????????????? ?? ?????????在 sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956)at at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)at at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3072)at at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323) 在sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)at at java.sql.DriverManager.getConnection(DriverManager.java:579)at java.sql.DriverManager.getConnection(DriverManager.java:221)at dbaccess.DbAccess.main(DbAccess.java:28)
我谷歌并在Stack上找到其他问题:Stack Post
所以我添加了所有可以帮助我连接* .mdb文件的ODBC驱动程序。但没有什么好处的。(
它是什么以及如何连接到Access DB?
答案 0 :(得分:3)
您的代码没有任何根本性的错误,因为我将其粘贴到Eclipse中并且运行正常。我做的唯一更改是指定数据库文件的路径,即不使用
DBQ=myDB.mdb
我用过
DBQ=C:\\__tmp\\myDB.mdb
我也在32位JVM(在32位计算机上)下运行它。所以,我的建议是
尝试像我一样指定.mdb
文件的完整路径。
如果仍然出现错误,请检查Java环境以查看应用程序是否在64位JVM中运行。如果是,则Driver={Microsoft Access Driver (*.mdb)}
将不起作用:没有旧版Jet ODBC驱动程序的64位版本。在这种情况下,您有两个选择:
我。将应用程序配置为在32位JVM或
中运行 II。从here下载并安装64位版本的Access数据库引擎,然后使用Driver={Microsoft Access Driver (*.mdb, *.accdb)}
。
答案 1 :(得分:2)
现在已经从Java 8中删除了JDBC-ODBC Bridge,更好的方法是使用UCanAccess JDBC驱动程序。有关更多信息,请参阅