Данные не сохраняются в таблице MEMORY HSQL - PullRequest
1 голос
/ 13 сентября 2011

Я создал таблицу MEMORY в HSQL.Но данные сохраняются и доступны только при запуске моего Java-приложения. В FAQ по HSql они сказали, что

...the default, MEMORY tables are persistent.

Данные не являются постоянными после того, как программа существует.В чем здесь проблема?

SQL:

CREATE MEMORY TABLE SESSIONS(
    SESSION_DATE DATE NOT NULL,
    IN_TIME TIMESTAMP NOT NULL,
    OUT_TIME TIMESTAMP NOT NULL)

Java:

DriverManager.getConnection("jdbc:hsqldb:file:"+
    DbConnection.class.getResource("/loginTimerDB").getPath()+"/loginTimerDB",
    "SA",
    "");

Я поместил этот файл базы данных в пакеты Java, чтобы сделать простойфайл JAR при развертывании.

Хорошо.Сначала я думал об упаковке базы данных в jar-файл.поэтому я переместил эту папку базы данных hsql за пределы исходных пакетов.И я изменил код Java, как показано ниже:

"jdbc:hsqldb:file:loginTimerDB/loginTimerDB"

Ранее я работал с hsql db, и у меня никогда не возникало подобных проблем.

Ответы [ 2 ]

1 голос
/ 14 сентября 2011

Вы закрываете базу данных до выхода из приложения?Что касается Hsqldb Руководство пользователя, закрытие базы данных , вам необходимо отправить команду SHUTDOWN через соединение JDBC

connection.prepareStatement("SHUTDOWN").execute();

или установить свойство shutdown=true в строке подключения:

jdbc:hsqldb:file:loginTimerDB/loginTimerDB;shutdown=true
1 голос
/ 13 сентября 2011

Когда вы помещаете базу данных в банку, она становится доступной только для чтения.

В своем развертывании вы можете извлечь базу данных в отдельный каталог с разрешениями на чтение / запись перед доступом к ней.

...