2014-09-29 4 views
2

Идея моего приложения заключается в том, чтобы исключить прямой доступ клиента к моей базе данных (который находится в формате .mdb), загрузив весь файл .mdb на клиентскую сторону, записывая изменения, сделанные ими, и загружая эти изменения один раз в день для каждого клиент. Проблема, которую я имею при использовании ucanaccess, кажется, что она загружает всю базу данных каждый раз, когда вызывается getDatabase2(). в консоли это то, что я получаю бесконечное время, пока приложение не загрузится. (И это займет много времени). Есть ли способ сделать ucanaccess только для моста (только транзакция)? или, может быть, я использую неправильный подход? Файл .mdb имеет размер 50Mo с максимальными входами 80-100k. Я использую Windows XP, Затмение 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), время загрузки (время первого соединения) будет быть значительно уменьшены специально для случая памяти = ложь. Для поддержки частичной загрузки из моих планов, потому что я думаю, что для этого уже есть решение: вам нужно просто использовать другой «фильтр» mdb, который указывает только на таблицы, которые вам нужны для вашей транзакции, связывая их как внешние resouces (другими словами, они должны использоваться как связанные таблицы). Обратите внимание, что параметр переназначения можно использовать для переопределения исходного пути внешней базы данных.

+0

Спасибо за хед-апр о времени загрузки. Тем не менее, мне трудно понять «параметр переадресации соединения для переопределения исходного внешнего пути базы данных»? вы имеете в виду разные настройки в URL-адресе? EDIT: Удивительная идея (фильтр mdb и связанные таблицы), я получу на нем –

+0

Я не знаю, действительно ли вам это нужно (полезно, например, заменить связанный путь базы данных на unix/linux os '), но синтаксис: jdbc: ucanaccess: // <путь к фильтру mdb>; remap = <связанный путь к базе данных как установленный при доступе> | <путь реальной привязки базы данных на клиенте> например jdbc: ucanaccess: ///opt/filter.mdb; remap = c: /db/database.mdb | /opt/database.mdb; memory = false – jamadei

+0

Ах, я думал, что это параллельный способ использовать под окнами, Спасибо, в любом случае, идея установить связанную базу данных уменьшила время загрузки на 25%, а не проверяет весь дБ, он просто ловит связанные таблицы. –

Смежные вопросы