2009-09-30 9 views
9

W dokumentacji HSQLDB jest instrukcja wiersza polecenia, aby uruchomić serwer HSQLDB (HSQLDB Doc). Ale istnieje ta właściwość "plik: mydb", więc zakładam, że nie jest to tryb tylko w pamięci.Jak uruchomić serwer HSQLDB w trybie tylko pamięciowym

Jak uruchomić serwer HSQLDB tylko z pamięcią?

Uruchomiłem następujące, ale nie mam pojęcia.

java -cp ../lib/hsqldb.jar org.hsqldb.Server -? 

Odpowiedz

6

użycie java -cp .\hsqldb-1.8.0.10.jar org.hsqldb.Server -database.0 mem:aname

W pamięci tryb jest określony przez URL połączenia - więc jeśli chcesz, możesz po prostu mieć plik server.properties w tym samym katalogu, i ustawić adres URL połączenia użyć protokołu mem - lub jeśli używasz hsqldb w innej aplikacji, która pozwala ci określić adres URL połączenia, taki jak jdbc, określ jdbc:hsqldb:mem:aname.

+0

Pominąłem wersję. \ Hsqldb-1.8.0.10.jar, ale to działa. Dziękuję Ci. –

0

Uważam, że plik jest używany do załadowania db do pamięci, a następnie trwa, gdy serwer zatrzymuje się. Nie sądzę, aby dostęp do pliku był możliwy podczas używania.

Minęło trochę czasu, odkąd użyłem HSQLDB (lub H2), ale jestem pewien, że tak to działa.

+0

Jeśli wczytać z pliku, to nie uruchamiać go przede wszystkim w pamięci, i to bardzo szybko, ale jeśli dokonać zmian będzie ona ostatecznie przepłukać je z powrotem na dysk, co nie jest chyba to, co chcesz. Aby to naprawić, musisz ustawić opcję hsqldb 'files_readonly'. Wykonanie tego w łańcuchu połączenia jest niepoprawne, ale możesz to zrobić w pliku właściwości DB: Po pierwszym uruchomieniu powyższego utworzy się mydb.properties, jeśli jeszcze nie istnieje. Dodaj nową linię mówiącą "hsqldb.files_readonly = true" na końcu tego, i gotowe. –

9

Zajęło mi około 2 dni, aby dowiedzieć się, jak uruchomić serwer w pamięci, a następnie uzyskać dostęp z zewnątrz. Mam nadzieję, że to uratuje czyjś czas.

Server server = new Server(); 
server.setDatabaseName(0, "mainDb"); 
server.setDatabasePath(0, "mem:mainDb"); 
server.setDatabaseName(1, "standbyDb"); 
server.setDatabasePath(1, "mem:standbyDb"); 
server.setPort(9001); // this is the default port 
server.start(); 

Gdy masz dostęp do bazy danych w pamięci dla każdej CRUD, oto co trzeba zrobić: -

String url="jdbc:hsqldb:hsql://192.168.5.1:9001/mainDb"; 
Class.forName("org.hsqldb.jdbc.JDBCDriver"); 
Connection conn = DriverManager.getConnection(url, "SA", ""); 

gdzie 192.168.5.1 to ip serwera gdzie HSQL jest uruchomiony. Aby połączyć się ze standbyDb, zamień mainDb na standbyDb w pierwszej linii. Po uzyskaniu połączenia można wykonać wszystkie operacje związane z bazą danych.

Aby połączyć się z serwerem za pomocą zdalnego przy użyciu DatabaseManagerSwing, tutaj jest to, co musisz zrobić.

Pobierz hsqldb-xxx słoik i skopiować go do folderu (xxx to wersja) otworzyć wiersz terminala lub polecenia i przejdź do folderu i uruchom

java -cp hsqldb-x.x.x.jar org.hsqldb.util.DatabaseManagerSwing 

Wybierz „HSQL Server Database Engine” z z menu rozwijanego Typ wpisz "jdbc: hsqldb: hsql: //192.168.5.1: 9001/mainDb" jako adres URL. To połączy cię ze zdalną instancją serwera HSQL w pamięci.

Happy Coding !!
DbManagerSwing UI

+1

To jedyny kompletny programowy przykład pamięci, jaki znalazłem. – mtyson

Powiązane problemy