Java:MS访问和JDBC连接
我想通过Java代码与MS Access连接。Java:MS访问和JDBC连接,java,ms-access,jdbc,Java,Ms Access,Jdbc,我想通过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.od
如何做到这一点 我编写了以下代码:
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 );
}
}
}
问题是我仍然无法与数据库联系。
我可能做错了什么?这可能是驾驶员经理注册问题 您可以将备用语句用作:
DriverManager.registerDriver(新的sun.jdbc.odbc.JdbcOdbcDriver());
连接conn=DriverManager.getConnection(..)代码>
这就行了
祝你好运 你的桌子空了吗?您是否收到任何错误消息
是否添加了如下代码以查看是否建立了连接:
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";
在ODBC管理员中启用SQL跟踪日志(有跟踪选项卡)。运行程序并查看跟踪日志中记录的内容。我的test Jython应用程序使用来自用户DSN的Access db记录如下:
连接:
....
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输入SQLDriverConnectW
HDBC 053C1CC0
HWND 00000000
WCHAR*0x74604EC8[-3]“******\0”
剑-3
WCHAR*0x74604EC8
剑2
剑*0x00000000
UWORD 0
jython c68-f18退出SQLDriverConnectionW,返回代码为0(SQL\u成功)
HDBC 053C1CC0
HWND 00000000
WCHAR*0x74604EC8[-3]“******\0”
剑-3
WCHAR*0x74604EC8
剑2
剑*0x00000000
UWORD 0
....
获取数据:
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)
jython c68-f18退出SQLFetch,返回代码为0(SQL\u成功)
HSTMT 053C2970
jython c68-f18输入SQLGetData
HSTMT 053C2970
UWORD 1
剑1
PTR 0x034DB270
SQLLEN 6
SQLLEN*0x009FF620
jython c68-f18退出SQLGetData,返回代码为0(SQL\U成功)
HSTMT 053C2970
UWORD 1
剑1
PTR 0x034DB270[5]“WOLZA”
SQLLEN 6
SQLLEN*0x009FF620(5)
分析该日志,您可能会发现一些有关错误的信息。您是否碰巧在catch块中打印了任何错误消息?您是否将“test”添加为DSN?“test”已在ODBC数据源管理员中创建为用户DSN。很抱歉再次询问您:是否看到此块中的任何打印输出?请在捕获:我的表不为空后添加此内容。它只是不给出任何输出。@GamDroid,你得到列数了吗?您是否在没有DSN或使用空字符串作为用户ID和密码的情况下尝试过它?好的!我将尝试使用这个并查看它。好的,谢谢!我去看看。