【发布时间】:2013-11-13 19:42:58
【问题描述】:
我试图能够从访问数据库访问数据。
我已经在 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();
}
}
}
【问题讨论】:
-
您还可以查看 jacksess 库,它也适用于所有平台(即不是特定于 Windows 的)。在我看来,它也比面向 JDBC/ODBC 的驱动程序更易于使用。
-
不,
Driver={MSAccessDriver ...}也不起作用。再看看我的回答。 -
更改了驱动程序以匹配您的答案,我相信。仍然得到同样的错误。我下载了 32 位和 64 位 jdk 两者都有。
-
System.out.println(System.getProperty("sun.arch.data.model"));说什么? -
64。那么它是 64 位的?
标签: java ms-access odbc relational-database