2013-05-18 164 views
7

我想連接與Java GUI程序我的MS訪問文件,但我有連接問題....JDBC驅動程序的MS Access連接

我的Windows 7 64B,和MS Office 2007 當我打開在控制面板中的ODBC驅動程序管理器我還沒有找到任何驅動程序的Microsoft Access(也許當我啓動ODBC開始運行64位的ODBC,現在我認爲是運行32位ODBC 我讀了這個,我做到了: 「jdbc -odbc連接窗口7 64位機器.. 1.右鍵單擊數據源(ODBC)..轉到屬性更改下面的東西

target [的%SystemRoot%\ Syswow64資料\ odbcad32.exe的] 開始在:%SYSTEMROOT%\ System32下]

按回車鍵繼續admin來源:source link 「 )現在,當我在conctrol潘內爾的ODBC開始,我可以看到司機screenshoot

我的程序代碼(我嘗試了兩種方法,但我有同樣的錯誤):

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

錯誤

值java.sql.SQLException:[微軟] [ODBC驅動程序管理器]數據源名稱未找到,如果您使用的是Windows 64位無指定默認驅動程序

+0

您是否驗證過安裝Access時安裝了ODBC組件? –

+0

我不記得了,但現在我重新安裝了ms office 2007. – artiny

+0

這是直接路徑不需要創建一個新的系統DSN,你可能需要檢查你的'.mdb'文件的路徑。 – Azad

回答

2

你可能需要去這條道路

C:/Windows/SysWOW64/odbcad32.exe

然後我注意到,您正在使用的直接路徑,而不是創造新的System DSN,您的直接路徑是正確的,直到路徑訪問文件,則必須給這樣的完整路徑:

JDBC:ODBC:驅動程序= Microsoft Access驅動程序(* .MDB,* .ACCDB); DBQ =路徑/到/ Invertory.mdb」

爲了得到你可能需要使用java.io.File有一個方法路徑返回到該文件的路徑abslute看到例如:

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 = 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); DBQ = C:\\ Users \\ Kex \\ Documents \\ NetBeansProjects \\ database_form \\ database_form \\ Invertory。 MDB「;我試過兩種方式,但沒有work.still錯誤後開始。我在:C:/Windows/SysWOW64/odbcad32.exe – artiny

+0

我試過在「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);「現在我還有其他的東西: 「java.lang.NullPointerException」這意味着我連接到訪問文件? – artiny

+0

不,在這個函數中沒有這裏是:https://www.dropbox.com/sh/wfym48e5mkso83p/TzmBVCeUhZ – artiny

2

我回答了類似的問題enter link description here而回。

基本上當時

  1. 你可以從32位Java通過JDBC-ODBC橋
  2. 連接到MS-訪問你無法通過JDBC-ODBC連接到32位ODBC驅動程序來自64位的Java。有一條消息告訴你只能連接32位程序
  3. 雖然Microsoft提供了64位的Ms-Access驅動程序,但它並不適用於Java的64位JDBC-ODBC驅動程序。

從那時起,似乎就有了一個新的開源Ms-Access JDBC驅動程序Ms-Access JDBC driver。我不知道它有多好。

0

你只是失去了一些東西在你的代碼就在這裏:

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

您需要Driver=)=;之間添加{}。 像下面這樣

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

的問題是,你應該上的Java運行32位嘗試安裝最新的JDK,它會工作

我運行它使用JDK版本「的jdk-7u67-Windows的i586系統.EXE」

10

使用UCanAccess JDBC驅動程序:

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

因此,對於您的示例它會是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

請描述你在做什麼。 –

-1

在64位系統上,你應該:

  1. 以管理員身份運行accessdatabaseengine_64.exe
  2. 運行Java - 7-64位 - JRE。
-1

如果你是在NetBeans工作,然後解壓ucanacess.zip文件中使用項目點擊屬性窗口中的編譯選項卡上添加在類路徑中的所有jar文件,並添加jar文件然後編譯和測試應用程序之後。

-1

JDBC-ODBC MS-ACCESS連接已停止在JDK8中工作。我通過將JDK7與JDK8一起安裝在同一臺PC上解決了這個問題,一旦安裝JDK7我將它指定爲在我的項目中使用的JDK版本,如下所示在Netbeans中:

1.右鍵單擊項目>單擊性能

2.CLICK圖書館在左側導航欄中

3.CLICK BUTTON後臺管理平臺>單擊按鈕添加平臺...

4.按照WIZZARD,儘管它顯示了Java標準版單擊下一步

5.NAVIGATE到C:\ Program Files文件(x86)的\ Java和選擇JDK7的文件夾>點擊下一步

6.場自動填入與正確的信息...>然後單擊Finish

7。從列表中選擇JDK平臺>點擊關閉>確定

8.JDK7應顯示在庫文件包中。

JDK7 in Libraries Package 點擊返回瀏覽器查看圖像後返回...

從這裏開始一切都必須順利進行。

希望它能解決您的問題。

謝謝。

相關問題