Я пишу программу Java, которая пересекает все под каталогом пользователя, который ищет базы данных h2 и отображает их содержимое. Вот код, который я написал до сих пор:Правильный способ удаления багажа JDBC создает?
private void openDatabase(File file) {
try {
Class.forName("org.h2.Driver");
Connection connection;
try {
connection = DriverManager.getConnection("jdbc:h2:" + file.getAbsolutePath());
DatabaseMetaData md = connection.getMetaData();
ResultSet resultSet = md.getTables(null, null, "%", null);
while (resultSet.next()) {
System.out.println("TABLE: " + resultSet.getString(3));
}
connection.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (connection != null) {
try {
connection.close();
} catch (SQLException e2) {
e2.printStackTrace();
}
}
}
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
}
Это делает хорошо - он находит (db)
и печатает таблицы в ней. Только одна проблема. Каждый раз, когда он находит (db)
, он создает (db).h2.db
и (db).trace.db
. Это означает, что при последующих запусках моей программы он находит и сканирует их в дополнение к (db)
. Это было бы неважно, за исключением того, что на третьем этапе он создает (db).h2.db.h2.db
, (db).trace.db.h2.db
, (db).h2.db.trace.db
и (db).trace.db.trace.db
. И так далее. Это проблема, которая растет экспоненциально.
Что я делаю неправильно? Как я могу либо предотвратить его от создания этих дополнительных файлов целиком, либо очистить его после себя, когда это будет сделано?
Странно. Я думаю, вы можете просто отфильтровать что-нибудь с помощью «.h2». или ".trace". –