我想从我的Java代码连接MS Access 怎么做?
我写了以下代码:
import java.sql.*;
public class Test
{
public static void main(String[] args)
{
String dataSourceName = "test";
String dbURL = "jdbc:odbc:" + dataSourceName;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection(dbURL, "ify","ify123");
Statement statement = con.createStatement();
ResultSet rs = statement.executeQuery("select * from emp");
System.out.println("hi");
while ( rs.next() ){
System.out.println(rs.getString(2));
}
}
catch (Exception err) {
System.out.println( "Error: " + err );
}
}
}
问题是我仍然无法与数据库联系。 我可能做错了什么?
答案 0 :(得分:1)
这可能是司机管理员注册问题。
您可以将替代语句用作:
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
Connection conn = DriverManager.getConnection(....);
这样做。
最好的运气!
答案 1 :(得分:0)
你的桌子是空的吗?你收到任何错误信息吗?
您是否添加了以下代码以查看是否已建立连接:
ResultSet rs = stmt.executeQuery( sql );
ResultSetMetaData md = rs.getMetaData();
System.out.println( md.getColumnCount() );
编辑:您是否尝试过不使用DSN进行连接:
String url =
"jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:/directory??/???.mdb";
答案 2 :(得分:0)
在ODBC Administrator中启用SQL跟踪日志(有“跟踪”选项卡)。运行程序并查看跟踪日志中记录的内容。我使用来自用户DSN的Access数据库的测试Jython应用程序记录如下:
连接:
....
jython c68-f18 ENTER SQLDriverConnectW
HDBC 053C1CC0
HWND 00000000
WCHAR * 0x74604EC8 [ -3] "******\ 0"
SWORD -3
WCHAR * 0x74604EC8
SWORD 2
SWORD * 0x00000000
UWORD 0 <SQL_DRIVER_NOPROMPT>
jython c68-f18 EXIT SQLDriverConnectW with return code 0 (SQL_SUCCESS)
HDBC 053C1CC0
HWND 00000000
WCHAR * 0x74604EC8 [ -3] "******\ 0"
SWORD -3
WCHAR * 0x74604EC8
SWORD 2
SWORD * 0x00000000
UWORD 0 <SQL_DRIVER_NOPROMPT>
....
获取数据:
jython c68-f18 EXIT SQLFetch with return code 0 (SQL_SUCCESS)
HSTMT 053C2970
jython c68-f18 ENTER SQLGetData
HSTMT 053C2970
UWORD 1
SWORD 1 <SQL_C_CHAR>
PTR 0x034DB270
SQLLEN 6
SQLLEN * 0x009FF620
jython c68-f18 EXIT SQLGetData with return code 0 (SQL_SUCCESS)
HSTMT 053C2970
UWORD 1
SWORD 1 <SQL_C_CHAR>
PTR 0x034DB270 [ 5] "WOLZA"
SQLLEN 6
SQLLEN * 0x009FF620 (5)
分析该日志,您可能会找到一些有关错误的信息。