2014-09-29 62 views
2

我的應用程序背後的想法是通過下載整個.mdb文件到客戶端,通過記錄他們所做的修改和上傳,每天一次,每次這些變化放逐客戶對我的數據庫(這是的.mdb格式)直接訪問客戶。 我遇到的問題是使用ucanaccess時,它似乎每次調用getDatabase2()時都會加載整個數據庫。在控制檯,這是我得到無限次,直到應用程序已加載。 (這將花費很多時間)。 是否有任何使ucanaccess做橋接的東西(只是交易)?或者也許我正在使用錯誤的方案? .mdb文件大小爲50Mo,最大條目數爲80-100k。 我使用Windows XP時,Eclipse,Java 7中 爲getDataBase代碼如下ucanaccess超載系統,該怎麼辦?

private static Connection getDatabase2() throws Exception{ 


    String url="jdbc:ucanaccess:////Jv1kbafap001/teams/Medic/database.mdb;memory=false"; 
    String user="admin"; 
    String pass=""; 
    return DriverManager.getConnection(url,user,pass); 
} 

回答

2

在接下來的ucanaccess版本(2.0.9.1),加載時間(第一個連接的時間)在內存= false的情況下明顯減少。 爲了支持部分負載超出了我的計劃,因爲我覺得已經有一個解決方案:你剛纔使用另一種「過濾器」 MDB只指向你需要爲你的交易的表,將它們連接外部resouces(換句話說,它們必須用作鏈接表)。 請注意,您可以使用重映射連接參數來覆蓋原始外部數據庫路徑。

+0

謝謝你關於加載時間的平視。但是,我無法理解「重新映射連接參數以覆蓋原始外部數據庫路徑」?你的意思是不同的網址設置?編輯:真棒的想法(過濾器MDB和鏈接表)我會得到它 – 2014-09-29 13:00:42

+0

我不知道你是否真的需要這個(它是有用的,例如,替換unix/linux操作系統上的鏈接數據庫路徑'),但語法是: JDBC:ucanaccess:// <過濾MDB的路徑>; <獲取作爲設置好的鏈接數據庫路徑>重新映射= | <客戶端上的真實鏈接數據庫路徑> 例如 JDBC:ucanaccess:///opt/filter.mdb;重新映射= C:/db/database.mdb | /opt/database.mdb;存儲器=假 – jamadei 2014-09-29 14:38:14

+0

阿確定我認爲這是窗下使用並行方式,謝謝你的好意的想法,建立一個鏈接數據庫確實減少25%的加載時間ATLEAST,而不是檢查整個數據庫,它只是抓住了表的鏈接 – 2014-09-29 14:43:50