2013-07-19 221 views
0
  try{ 
       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
       String database = 
      "jdbc:odbc:Driver={MS Access Database (*.accdb)};DBQ=obn.accdb;"; 
     c= DriverManager.getConnection(database, "", ""); 
     s=c.createStatement(); 
        string = "IN TRY"; 
        s.close(); // Close the statement 
        c.close(); // Close the database. Its no more required 
        JOptionPane.showMessageDialog(null, string); 

      } 
      catch(Exception e) 
      { 
       string = "IN exception"; 
       JOptionPane.showMessageDialog(null, string); 
      } 

我嘗試訪問使用Java的MS Access數據庫使用上述代碼總是有一個例外。我已經嘗試了一些東西使用Java訪問MS Access數據庫

  c= DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=obn.mdb"); 
      s=c.createStatement(); 

在第一個和第二個我得到的例外 -

[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified. 

...

   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     c= DriverManager.getConnection("jdbc:odbc:obn"); 
     s=c.createStatement(); 

試着這樣做類似這樣的,在加入OBN ODBC中的數據源(32位),選擇數據庫的路徑。但它也沒有工作。

它給錯誤

The specified DSN contains an architecture mismatch between the Driver and Application 

我通常不使用的MS Access,但我必須爲大學項目

回答

1

驗證您正在爲您的環境使用正確的ODBC驅動程序名稱。您需要指定要麼...

{Microsoft Access Driver (*.mdb)} 

......或者......

{Microsoft Access Driver (*.mdb, *.accdb)} 

...這取決於你是否要使用舊的 「噴氣機」 的驅動程序(僅適用於的.mdb文件,僅適用於32位應用程序)或較新的「ACE」驅動程序(.mdb或.accdb文件,可由32位或64位應用程序使用,如果機器尚未安裝,可能需要單獨安裝訪問它)。

+0

驅動程序關鍵字語法錯誤是我什麼時候得到我嘗試 {Microsoft Access驅動程序(* .MDB,* .ACCDB)} 或 {Microsoft Access驅動程序(* .ACCDB)} – XuryaX

+0

C =的DriverManager.getConnection( 「JDBC:ODBC:OBN」); 我認爲這裏有64位,32位不匹配 – XuryaX

0

我找到了解決方案。

使用此連接是正確的。 c = DriverManager.getConnection(「jdbc:odbc:obn」); 數據庫必須在windows管理工具的odbc下添加。由於沒有64位驅動程序,所以必須使用32位驅動程序。由於32位odbc驅動程序正在使用,我們無法使用64位JVM,因此將JVM從64位更改爲32位從項目經理伎倆,現在它工作正常