Я использую UCanAccess для подключения моего приложения JavaFX к базе данных на общем диске. В первый раз, когда я открываю приложение и запускаю некоторый запрос, начальное подключение к базе данных занимает около 25 секунд.Медленное начальное подключение к базе данных доступа MS
Я установил некоторые временные метки и обнаружил, что основная причина - это метод ниже, в частности, первый блок catch try занимает 25 секунд. После этого каждый раз, когда я вызываю этот метод, все работает в течение секунды. Любые предложения о том, как это можно решить?
public void openDB(){
// Load MS access driver class
try {
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("There was an error while connecting to the database");
e.printStackTrace();
}
String databasePath ="jdbc:ucanaccess:////server\\MyDB.accdb";
try {
this.connection = DriverManager.getConnection(databasePath, "", "");
this.connection.setAutoCommit(false);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
this.statement = connection.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Можете ли вы пояснить: вы говорите: 'Class.forName (...)' занимает 25 секунд? –
@James_D Правильно, эта строка кода занимает 25 секунд. Остальные две попытки поймать блоки последние секунды. – Wizard
Попробуйте полностью исключить блок 'Class.forName()'. Это часто не требуется, если вы не используете довольно старый JDK. –