Создание общей базы данных HSQLDB - PullRequest
5 голосов
/ 08 июня 2009

Внутрипроцессная база данных HSQLDB не должна открываться другими пользователями, даже для файлового хранилища.

В документации указывается, что это возможно: Режимы сервера , Расширенные темы , но я пока не нашел URL-адрес, как активировать это поведение.

Кто-нибудь сделал это, чтобы поделиться, как?

Ответы [ 2 ]

5 голосов
/ 12 июля 2010

У меня работает следующее:

  1. Запустите сервер из своего кода, который показан в коде org.hsqldb.test.TestBase в исходном коде HSQLDB. Что-то вроде:

    Server server = new Server();
    server.setDatabaseName(0, "test");
    server.setDatabasePath(0, "file:/path/to/db");
    server.start();
    
  2. В той же JVM откройте Соединение с той же базой данных, как в обычной (не серверной) программе, например:

    conn = DriverManager.getConnection("jdbc:hsqldb:file:/path/to/db");
    

Затем используйте conn для выполнения любого SQL-запроса.

В моих собственных экспериментах это работает, и работает для оперативной памяти и файловой базы данных.

Разумеется, другим JVM потребуется подключаться к серверу по протоколу TCP. Попытка открыть файл базы данных непосредственно в другой JVM приведет к обычной ошибке о блокировке базы данных.

0 голосов
/ 11 июня 2009

У меня есть опыт запуска HQLDB в режиме сервера вне приложения и подключения нескольких приложений к базе данных.

Как описано в документе , процесс прост.

...