Java: MS Access и подключение JDBC - PullRequest
0 голосов
/ 16 ноября 2010

Я хочу подключиться к MS Access из своего кода Java.
Как это сделать?

Я написал следующий код:

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 );
   }
  }
}

Проблема в том, что яЯ до сих пор не могу связаться с базой данных.Что я могу делать не так?

Ответы [ 3 ]

1 голос
/ 16 ноября 2010

Это может быть проблема с регистрацией менеджера драйверов.

Вы можете использовать альтернативные операторы как:

DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver()); Connection conn = DriverManager.getConnection(....);

Это будет делать.

Удачи!

0 голосов
/ 16 ноября 2010

Включить журнал трассировки SQL в Администраторе ODBC (есть вкладка Трассировка).Запустите вашу программу и посмотрите, что вошло в журнал трассировки.Мое тестовое приложение Jython, которое использует Access db из пользовательского DSN, регистрирует что-то вроде:

Соединение:

....
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)

Анализ этого журнала, и вы будетевозможно, найдете информацию об ошибках.

0 голосов
/ 16 ноября 2010

Ваш стол пуст? Вы получаете какие-либо сообщения об ошибках?

Вы добавили код, подобный следующему, чтобы увидеть, установлено ли соединение:

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";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...