Существует файл h2-базы-данных в моем src каталоге (Java, Eclipse): h2test.db
Проблема:
при запуске h2.jar с командной строки (и таким образом h2 интерфейс браузера на порте 8082), я составил 2 таблицы, 'test1' и 'test2' в h2test.db, и я поместил некоторые данные в них;
при попытке получить доступ к ним из кода Java (JDBC), это бросает меня "таблица, не найденная исключением". "Шоу таблицы" из кода Java показывает набор результатов с 0 строками.
Кроме того, при составлении новой таблицы ('newtest') из кода Java (CREATE TABLE... и т.д.), я не вижу его при запуске h2.jar интерфейса браузера впоследствии; просто другие две таблицы ('test1' и 'test2') показывают (но затем недавно составленная таблица 'newtest' доступна из кода Java).
Я неопытен со встроенными базами данных; я полагаю, что делаю что-то существенно неправильно здесь. Мое предположение, что я получаю доступ к тому же файлу - однажды из приложения Java, и однажды от h2 консольного интерфейса браузера. Я, может казаться, не понимаю это, что я делаю неправильно здесь?
Править: согласно просьбе, добавление некоторого кода:
Код Java:
Class.forName("org.h2.Driver");
String url = "jdbc:h2:" + "db/h2test.db";
String user = "aeter";
String password = "aeter";
Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement ps2 = conn.prepareStatement("Show tables;");
ResultSet rs = ps2.executeQuery();
Этот набор результатов имеет 0 строк (никакие таблицы), вместо того, чтобы показать мне эти 2 таблицы.
Настройки Консольного интерфейса браузера H2:
Settings: Generic h2(embedded) driver class: org.h2.Driver JDBC URL: jdbc:h2:../../workspace/project_name/src/db/h2test.db user name: aeter password: aeter
EDIT2: Я скопировал базу данных в новую папку. Теперь файл дб в новой папке показывают с 'newtest' таблицей (из кода Java) и с 'test1' и 'test2' таблицами (от консольного браузера h2 интерфейс) - точно тот же способ, которым показали более старый файл дб. Таким образом, проблема сохраняется с копией файла дб.
Для встроенного режима вы нужно будет проверить путь. Например, используйте путь относительно вашего домашнего каталога:
"jdbc:h2:file:~/db/h2test.db"
Чтобы быть уверенным, используйте полный путь:
"jdbc:h2:file:/users/aeter/db/h2test.db"
Для удобства добавьте ; IFEXISTS = TRUE
, чтобы избежать создания ложных файлов базы данных.
См. Подключение к базе данных с помощью JDBC для получения дополнительной информации.
H2 Сервер URL-адреса относятся к -baseDir
, указанному в качестве параметра для main ()
.