2009-06-08 6 views
5

Не ожидается, что в базе данных HSQLDB не будут открываться другие, даже для файлового хранилища.Создание общей базы данных HSQLDB

Документация указывает, что это возможно: Server Modes, Advanced Topics, но я еще не нашел URL-адрес, как активировать это поведение.

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

ответ

5

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

  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

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

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

+1

Вы сделали это в процессе? –

+0

Что это значит? Я запустил сервер в процессе - нет (я запускаю его непосредственно из ОС), подключился ли я к серверу в процессе - да. Что ты пытаешься сделать? Вы пытаетесь запустить встроенный сервер в режиме сервера? – FoxyBOA