2016-04-03 61 views
2

我試圖在Mac(el capitaine)中連接到Eclipse(Mars 4.5.0; Java 1.8)中的Microsoft Access數據庫。我不斷收到錯誤: net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.4 given file does not exist: Users/sebastianzeki/Documents/BEST2RFA_DBv1.accdb「給定文件不存在」與UCanAccess連接問題

這是我的代碼:

import java.sql.*; 

public class DbAccess 
{ 
    public static void main(String[] args) 
    { 

     try 
     { 
      Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); 
      Connection conn=DriverManager.getConnection("jdbc:ucanaccess://Users/sebastianzeki/Documents/BEST2RFA_DBv1.accdb;"); 
      Statement stment = conn.createStatement(); 
      String qry = "SELECT * FROM Table1"; 

      ResultSet rs = stment.executeQuery(qry); 
      while(rs.next()) 
      { 
       String id = rs.getString("ID") ; 
       String fname = rs.getString("Nama"); 

       System.out.println(id + fname); 
      } 
     } 
     catch(Exception err) 
     { 
      System.out.println(err); 
     } 

    } 
} 

我敢肯定它的東西與路徑斜槓做,但我已經想盡排列,仍然得到同樣的錯誤。

+0

我M不熟悉Mac文件系統,但你嘗試過「jdbc:ucanaccess:/// ...」嗎? < - 在用戶之前加入一個額外的斜槓。那麼刪除「;」在「... accdb;」? – RubioRic

+0

啊哈。這是額外的斜線。謝謝。添加爲答案,以便我可以接受? –

+0

很高興爲您提供幫助。當然。:-) – RubioRic

回答

4

我不熟悉Mac文件系統,但是您是否嘗試過「jdbc:ucanaccess:/// ...」(包括額外的斜槓)?

說明:

到數據庫文件的路徑緊跟着連接URL的jdbc:ucanaccess://前綴,所以

jdbc:ucanaccess://Users/sebastianzeki/Documents/BEST2RFA_DBv1.accdb; 

的路徑,數據庫文件

Users/sebastianzeki/Documents/BEST2RFA_DBv1.accdb 

這被解釋爲相對路徑,相對於啓動Java應用程序時有效的操作系統級別的當前目錄。

爲了使路徑被解釋爲絕對路徑它必須以正斜槓開始,即

/Users/sebastianzeki/Documents/BEST2RFA_DBv1.accdb 

因此連接URL必須

jdbc:ucanaccess:///Users/sebastianzeki/Documents/BEST2RFA_DBv1.accdb