2009-09-30 13 views
9

Nella documentazione di HSQLDB è presente un'istruzione della riga di comando per avviare un server HSQLDB (HSQLDB Doc). Ma esiste questa proprietà "file: mydb", quindi presumo che non sia in modalità solo memoria.Come eseguire un server HSQLDB in modalità solo memoria

Come si esegue un server HSQLDB solo memoria?

Ho eseguito quanto segue ma non ho idea.

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

risposta

6

uso java -cp .\hsqldb-1.8.0.10.jar org.hsqldb.Server -database.0 mem:aname

In memoria modalità viene specificata dal URL di collegamento - quindi se si vuole, si può solo avere un file server.properties nella stessa directory, e impostare l'URL di connessione per utilizzare il protocollo mem - oppure se si sta utilizzando hsqldb in un'altra applicazione che consente di specificare l'url della connessione come jdbc, specificare jdbc:hsqldb:mem:aname.

+0

Ho omesso la versione in. \ Hsqldb-1.8.0.10.jar, ma poi funziona. Grazie. –

0

Credo che il file venga utilizzato per caricare il db in memoria e quindi persistere quando il server si arresta. Non penso che il file sia accessibile mentre stai correndo.

È passato un po 'di tempo da quando ho usato HSQLDB (o H2), ma sono abbastanza sicuro che sia così che funziona.

+0

Se si carica da un file, viene eseguito principalmente in memoria ed è estremamente rapido, ma se si apportano modifiche, verranno ripristinati sul disco, che probabilmente non è quello che si desidera. Per risolvere questo problema, è necessario impostare l'opzione hsqldb 'files_readonly'. L'operazione nella stringa di connessione non è valida, ma è possibile farlo nel file delle proprietà del database: questa prima volta che si esegue quanto sopra, verrà creato mydb.properties se non esiste già. Aggiungi una nuova riga alla fine di "hsqldb.files_readonly = true" e hai finito. –

9

Sono occorsi circa 2 giorni per capire come avviare un server in memoria e quindi accedere dall'esterno. Spero che questo salvi il tempo di qualcuno.

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(); 

Quando si deve accedere al database in-memory per qualsiasi CRUD, ecco cosa devi fare: -

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

dove 192.168.5.1 è l'IP del server in cui è in esecuzione HSQL. Per connettersi a standbyDb, sostituire mainDb con standbyDb nella prima riga. Una volta ottenuta la connessione, è possibile eseguire tutte le operazioni relative al database.

Per connettersi al server da remoto utilizzando DatabaseManagerSwing, ecco cosa è necessario fare.

Scarica hsqldb-xxx vaso e copiarlo in una cartella (xxx è la versione) aprire un terminale, o un comando e cd per la cartella ed eseguire

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

Selezionare "HSQL Server Database Engine" da il menu a discesa Type e restituisce "jdbc: hsqldb: hsql: //192.168.5.1: 9001/mainDb" come URL. Questo ti collegherà all'istanza del server in memoria HSQL remoto.

Happy Coding !!

+1

Questo è l'unico esempio di memoria programmatica completo che ho trovato ancora. – mtyson

Problemi correlati