2013-05-18 104 views
7

Tôi muốn kết nối với tập tin truy cập MS của tôi với chương trình Java GUI, nhưng tôi có vấn đề với kết nối ....trình điều khiển JDBC kết nối MS Access

Tôi có Windows 7 64b, và MS Office 2007. Khi tôi mở Trình điều khiển trình điều khiển ODBC trong bảng điều khiển tôi không tìm thấy bất kỳ trình điều khiển nào cho Microsoft Access (có thể khi tôi bắt đầu ODBC được bắt đầu chạy ODBC 64 bit, bây giờ tôi nghĩ là đang chạy ODBC 32 bit. Tôi đọc nó và làm cho nó: "jdbc -kết nối abc cho cửa sổ 7 máy 64 bit .. 1. Nhấp chuột phải Nguồn dữ liệu (ODBC) .. chuyển đến các thuộc tính thay đổi điều folloing

mục tiêu [ % SystemRoot% \ SysWOW64 \ odbcad32.exe] bắt đầu trong: [% SystemRoot% \ System32]

nhấn Enter và tiếp tục nguồn như admin: source link " ) Bây giờ khi tôi bắt đầu vào conctrol pannel ODBC tôi có thể thấy người lái xe screenshoot

mã chương trình của tôi (tôi đã thử hai cách nhưng tôi có cùng một lỗi):

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

lỗi

java.sql.SQLException: [Microsoft] [ODBC driver Manager] Dữ liệu tên nguồn không tìm thấy và không có tài xế mặc định

+0

Bạn đã xác minh rằng thành phần ODBC đã được cài đặt khi bạn cài đặt quyền truy cập? –

+0

Tôi không nhớ, nhưng bây giờ tôi cài đặt lại văn phòng ms 2007. – artiny

+0

Đây là đường dẫn trực tiếp không cần tạo DSN hệ thống mới, bạn có thể cần kiểm tra đường dẫn đến tệp '.mdb'. – Azad

Trả lời

2

Nếu bạn đang sử dụng Windows 64-bit, bạn có thể cần phải đi đến con đường này

C: /Windows/SysWOW64/odbcad32.exe

Sau đó, tôi nhận thấy rằng bạn đang sử dụng các đường dẫn trực tiếp thay vì tạo mới System DSN, đường dẫn trực tiếp của bạn là đúng cho đến khi đường dẫn đến truy cập tập tin mà bạn phải cung cấp đường dẫn đầy đủ như thế này:

jdbc: odbc: Driver = Microsoft Access Driver (* .mdb, * accdb); DBQ = path/to/Invertory.mdb"

để có được đường dẫn mà bạn có thể cần phải sử dụng java.io.File rằng có một phương thức trả về con đường abslute đến tập tin xem ví dụ:

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

Chuỗi DATABASE = "jdbc: odbc: Trình điều khiển = Trình điều khiển truy cập Microsoft (* .mdb, * .accdb); DBQ = C: /Users/Kex/Documents/NetBeansProjects/database_form/database_form/Invertory.mdb"; Chuỗi DATABASE = "jdbc: odbc: Trình điều khiển = Trình điều khiển truy cập Microsoft (* .mdb, * .accdb); DBQ = C: \\ Người dùng \\ Kex \\ Tài liệu \\ NetBeansProjects \\ database_form \\ database_form \\ Invertory. mdb "; Tôi đã thử hai cách nhưng không hoạt động. Đã xảy ra lỗi sau khi bắt đầu. Tôi đang ở: C: /Windows/SysWOW64/odbcad32.exe – artiny

+0

Tôi đã thử đặt mã này sau và trước "Chuỗi DATABASE =" jdbc: odbc: Trình điều khiển = Trình điều khiển Truy cập Microsoft (.mdb, * .accdb); DBQ = C :/Users/Kex/Documents/NetBeansProjects/database_form/database_form‌ /Invertory.mdb "; Chuỗi DATABASE =" jdbc: odbc: Driver = Trình điều khiển truy cập Microsoft (.mdb, * .accdb); "và bây giờ tôi có một cái gì đó khác: "java.lang.NullPointerException" tht có nghĩa là tôi đã kết nối với tập tin truy cập? – artiny

+0

không, trong chức năng này không có ở đây là: https://www.dropbox.com/sh/wfym48e5mkso83p/TzmBVCeUhZ – artiny

2

tôi đã trả lời một câu hỏi tương tự enter link description here một thời gian trở lại.

Về cơ bản tại thời điểm đó:

  1. Bạn có thể kết nối với Ms-Access từ 32 bit java qua cầu JDBC-ODBC
  2. Bạn không thể kết nối với một trình điều khiển ODBC 32 bit thông qua JDBC-ODBC từ java 64 bit. Có một thông báo cho bạn biết rằng bạn chỉ có thể kết nối từ một chương trình 32 bit
  3. Trong khi Microsoft cung cấp trình điều khiển Ms-Access 64 bit, nó không hoạt động với trình điều khiển JDBC-ODBC 64 bit của Java.

Kể từ đó có vẻ như là một trình điều khiển Ms-Access JDBC nguồn mở mới Ms-Access JDBC driver. Tôi không có ý tưởng tốt như thế nào.

0

Bạn chỉ thiếu cái gì trong mã của bạn ngay tại đây:

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

Bạn cần phải thêm {} giữa Driver=)=;. Như thế này Dưới

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

Vấn đề là bạn nên chạy trên Java 32 bit cố gắng cài đặt JDK mới nhất và nó sẽ làm việc

tôi chạy nó bằng cách sử JDK phiên bản "jdk-7u67-windows-i586 .exe"

10

Sử dụng UCanAccess JDBC driver:

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

vì vậy, ví dụ bạn nó sẽ được 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

mô tả những gì bạn đang làm. –

-1

Trên một hệ thống 64 bit, bạn nên:

  1. chạy như admin accessdatabaseengine_64.exe
  2. chạy java - 7-64 bit - jre.
-1

nếu bạn đang làm việc trong NetBeans thì sau khi giải nén tập tin ucanacess.zip thêm tất cả các tập tin jar trong classpath sử dụng cửa sổ tài sản của dự án nhấp chuột vào tab biên dịch và thêm file jar sau đó biên dịch và ứng dụng thử nghiệm.

-1

JDBC-ODBC MS-ACCESS CONNECTION STOPPED WORKING IN JDK8. Tôi đã giải quyết vấn đề này bằng cách cài đặt JDK7 cùng với JDK8 trong cùng một PC, sau khi cài đặt JDK7, tôi đã gán nó làm phiên bản JDK để sử dụng trong dự án của tôi như sau trong Netbeans:

1.RIGHT CLICK DỰ ÁN TRONG DANH SÁCH> NHẤP CHUỘT TÍNH

2.CLICK THƯ VIỆN TRÊN tRÁI CÂY NAVIGATION

3.CLICK NÚT QUẢN LÝ NỀN> bấm vào nút ADD PLATFORM ...

4.FOLLOW Wizzard, mặc dù nó cho thấy Java Standard Edition nhấn Next

5.Navigate ĐẾN C: \ Program Files (x86) \ Java và chọn thư mục CÁC JDK7> nhấn Next

6.The LĨNH VỰC AutoFill VỚI QUYỀN INFO ...> sau đó chọn Finish

7. CHỌN VẤN ĐỀ JDK TỪ DANH SÁCH> BẤM VÀO ĐÓNG> OK

8.JDK7 NÊN BAO GỒM GÓI LIBRARIES.

JDK7 in Libraries Package Nhấp vào Quay lại trình duyệt để quay lại đây sau khi xem hình ảnh ...

Từ đây mọi thứ phải chạy trơn tru.

Hy vọng nó sẽ giải quyết được vấn đề của bạn.

Cảm ơn.

Các vấn đề liên quan