2013-05-18 16 views
7

chcę podłączyć mój plik MS Access z programu Java GUI, ale mam problemy z podłączeniem ....sterownik JDBC połączenia MS Access

Mam Windows 7 64b i MS Office 2007. Kiedy otworzyłem Menedżer sterownika ODBC w panelu sterowania Nie znalazłem żadnego sterownika dla programu Microsoft Access (może gdy uruchomiłem ODBC został uruchomiony 64bitowy ODBC, teraz myślę, że działa 32bit ODBC. -odbc połączenie dla okna 7 maszyna 64-bitowa .. 1. Prawym przyciskiem myszy Źródło danych (ODBC) .. przejdź do właściwości zmień następującą rzecz:

target [ % SystemRoot% \ SysWOW64 \ odbcad32.exe] start: [% SystemRoot% \ System32]

naciśnij enter i kontynuować jako administratora źródło: source link " ) Teraz, kiedy rozpocznie się conctrol pannel ODBC widzę kierowca screenshoot

Mój kod programu (próbowałem na dwa sposoby, ale mam ten sam błąd):

 public void Connect() { 
     try { 
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 

// String DatabaseFile = "D:java/Invertory.mdb";  
//   String DATABASE = 
//     "jdbc:odbc:Driver=" 
//     + "{Microsoft Access Driver (*.mdb, *.accdb)};" 
//     + "DBQ=" + DatabaseFile;`enter code here` 
String DATABASE ="jdbc:odbc:Driver= Microsoft Access Driver (*.mdb, *.accdb);DBQ=Invertory.mdb"; 
      CONEX = DriverManager.getConnection(DATABASE); 

     } catch (Exception X) { 
      X.printStackTrace(); 
      //JOptionPane.showMessageDialog(null,e); 
     } 
    } 

błędzie

java.sql.SQLException: [Microsoft] [ODBC Driver Manager] Nazwa źródła danych nie znaleziono i nie domyślnego sterownika określony

+0

Czy zweryfikowałeś, że komponent ODBC został zainstalowany podczas instalacji programu Access? –

+0

Nie pamiętam, ale teraz ponownie zainstalowałem MS Office 2007. – artiny

+0

To jest ścieżka bezpośrednia, nie trzeba tworzyć nowego Systemowego DSN, prawdopodobnie musisz sprawdzić swoją ścieżkę do pliku '.mdb'. – Azad

Odpowiedz

2

Jeśli używasz systemu Windows 64-bit prawdopodobnie trzeba iść do tej ścieżce

C: /Windows/SysWOW64/odbcad32.exe

Wtedy zauważyłem, że używasz bezpośrednią ścieżkę zamiast tworzenia nowego System DSN Twoja bezpośrednia ścieżka jest prawidłowa aż ścieżce do dostępu plik należy podać pełną ścieżkę tak:

jdbc: odbc: driver = Microsoft Access kierowcy (* .mdb, * Accdb); dbq = ścieżka/do/Invertory.mdb”

uzyskać ścieżkę prawdopodobnie trzeba użyć java.io.File które mają metodę zwraca abslute ścieżkę do pliku, zobacz przykład:

import java.sql.*; 
public class TestConnection { 
    Connection con ; 
    Statement st ; 
    ResultSet rs ; 
    String db; 
    public TestConnection(){ 
     try{ 
      String path = new java.io.File("Invertory.mdb").getAbsolutePath(); 
     db ="JDBC:ODBC:Driver=Microsoft Access Driver (*.mdb, *.accdb); DBQ="+path; 
      doConnection(); 
     } catch(NullPointerException ex){ 
       ex.printStackTrace(); 
      } 

    } 

    public void doConnection(){ 
     try{ 
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      con = DriverManager.getConnection(db); 
      st = con.createStatement(); 
      rs = st.executeQuery("select * from Invertory"); 
      while(rs.next()){ 
       System.out.println(rs.getObject(1)); 
      } 
     }catch(SQLException | ClassNotFoundException ex){ 
      System.out.println(ex.toString()); 

     } 

    } 
    public static void main(String...argS){ 
     new TestConnection(); 
    } 
} 
+0

String DATABASE = "jdbc: odbc: Driver = sterownik Microsoft Access (* .mdb, * .accdb); DBQ = C: /Users/Kex/Documents/NetBeansProjects/database_form/database_form/Invertory.mdb"; String DATABASE = "jdbc: odbc: Driver = sterownik Microsoft Access (* .mdb, * .accdb); DBQ = C: \\ Users \\ Kex \\ Documents \\ NetBeansProjects \\ database_form \\ database_form \\ Invertory. mdb "; Próbowałem dwukierunkowo, ale nie działa. Błąd po starcie. Jestem w: C: /Windows/SysWOW64/odbcad32.exe – artiny

+0

Próbowałem umieścić ten kod po i przed "String DATABASE =" jdbc: odbc: Driver = Microsoft Access Driver (.mdb, * .accdb); DBQ = C :/Users/Kex/Documents/NetBeansProjects/database_form/database_form /Invertory.mdb "; String DATABASE =" jdbc: ODBC: Driver = Microsoft Access Driver (.mdb, * .accdb); "i teraz mam coś jeszcze: "java.lang.NullPointerException" oznacza, że ​​mam podłączony plik dostępu? – artiny

+0

nie, w tej funkcji nie ma tutaj: https://www.dropbox.com/sh/wfym48e5mkso83p/TzmBVCeUhZ – artiny

2

Odpowiedziałem podobne pytanie enter link description here jakiś czas temu.

Zasadniczo w tym czasie:

  1. Można połączyć się z MS Access od 32 bit java przez most JDBC-ODBC
  2. Nie można połączyć się z 32-bitowego sterownika ODBC poprzez JDBC-ODBC z 64-bitowego java. Pojawił się komunikat informujący, że można łączyć się tylko z programami 32-bitowymi
  3. Podczas gdy Microsoft udostępnia 64-bitowy sterownik Ms-Access, nie działał z 64-bitowym JDBC-ODBC Javy.

Od tego czasu wydaje się, że jest nowy sterownik JDBC typu open source Jsbd-owy Ms-Access JDBC driver. Nie mam pojęcia, jak dobrze jest.

0

po prostu czegoś brakuje w kodzie tutaj:

db ="JDBC:ODBC:Driver=Microsoft Access Driver (*.mdb, *.accdb); DBQ="+path; 

Trzeba dodać {} między Driver= i )=;. jak ten Poniżej

db ="JDBC:ODBC:Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ="+path; 
-1

Problemem jest to, że należy działać na Java 32 bit spróbować zainstalować najnowsze JDK i będzie działać

go uruchomić przy użyciu JDK wersję „JDK-7u67-windows-i586 .exe”

10

Zastosowanie UCanAccess JDBC Kierowca:

Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); 
Connection conn=DriverManager.getConnection("jdbc:ucanaccess://<mdb or accdb file path>",user, password); 
for example: 
Connection conn=DriverManager.getConnection("jdbc:ucanaccess://c:/pippo.mdb"); 

Tak dla przykładu, że będzie być Connection conn=DriverManager.getConnection("jdbc:ucanaccess://"+path)

0
final String fileName = "c:/myDataBase.mdb" 
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+fileName; 
Connection con = DriverManager.getConnection(url,username,password); 
+1

Proszę opisz, co robisz. –

-1

na systemie 64 bitowym, należy:

  1. prowadzony jako admin accessdatabaseengine_64.exe
  2. run java - 7-64 bit - JRE.
-1

jeśli pracujesz w NetBeans następnie po rozpakowaniu ucanacess.zip plik dodać wszystkie pliki jar w ścieżce klasy za pomocą okna właściwości projektu kliknij na zakładkę skompilować i dodać plik jar następnie skompilować i przetestować aplikację.

-1

JDBC-ODBC ZŁĄCZE MS-ACCESS ZATRZYMYŁ PRACĘ W JDK8. Rozwiązałem ten problem, instalując JDK7 wraz z JDK8 na tym samym komputerze, po zainstalowaniu JDK7 I przypisałem go jako wersję JDK do użycia w moim projekcie w następujący sposób: Netbeans:

1. WIDOK Z KLIKNIĘCIA PROJEKTU NA LISTĘ> KLIKNIJ WŁAŚCIWOŚCI

2.Kliknij BIBLIOTEKI na lewym Drzewo nawigacji

3.Kliknij przycisk Zarządzaj PLATFORMY> kliknij przycisk Add PLATFORMY ...

4.FOLLOW Wizzard, mimo to POKAZUJE JAVA Standard Edition kliknij Dalej

5.NAVIGATE do katalogu C: \ Program Files (x86) \ Java i wybierz folder JDK7> kliknij Dalej

6.Okres FIELD Autouzupełnianie z prawem informacji ...> kliknij Zakończ

7. WYBIERZ PLATFORMĘ JDK Z LISTY> KLIKNIJ ZAMKNIJ> OK

8.JDK7 POWINIEN POKAŻ W PAKIETU BIBLIOTEK.

JDK7 in Libraries Package Kliknij przycisk Wstecz w przeglądarce, aby powrócić tutaj po obejrzeniu obrazu ...

Stąd wszystko musi przebiegać sprawnie.

Mam nadzieję, że rozwiąże problem.

Dzięki.