Java:MS访问和JDBC连接

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

我想通过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 );
   }
  }
}
问题是我仍然无法与数据库联系。
我可能做错了什么?

这可能是驾驶员经理注册问题

您可以将备用语句用作:

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和密码的情况下尝试过它?好的!我将尝试使用这个并查看它。好的,谢谢!我去看看。