Newsgroup: it.comp.java
Titolo: Aiuto HSQLDB

Ho provato HSQLDB è non riesco a risolvere un problema:
Mi collego a un database e creo una tabella utilizzando il driver 
org.hsqldb.jdbcDriver e la stringa di connessione 
jdbc:hsqldb:file:/database/mioDB
Purtroppo alla chiusura del database la tabella viene eliminata, nel senso 
che quando faccio ripartire il programma e cerco di ricaricare il db non 
trova la tabella. Se è per questo non vengono creati file di dati, ma gli 
altri (.properties, .log, .lck, .script) rimangono!
Insomma come se stessi creando un database in memoria jdbc:hsqldb:mem:... ma 
non sto facendo cosi'! Un'altra cosa strana è che finchè il mio programma 
java non termina la tabella è completamente accessibile e utilizzabile. 
Inoltre sembra che solo la tabella non venga "storata" il db si. Bisogna 
fare qualche "stora le operazioni" prima di chiudere il programma?
Grazie mille!!!!!!!!!!!!!!!!!
Eli
 

 fare qualche "stora le operazioni" prima di chiudere il programma?
Uhmmm strano. Per prima cosa verifica che nel file .properties la 
proprietà modified non sia "yes". Se è così vuol dire che il db si sta 
chiudendo male.
Dalla stringa di connessione che usi stai usando la modalità in-process, 
potrebbe essere che l'applicazione venga chiusa mentre c'è ancora 
qualche connessione aperta verso il database. Se è così ti basta 
chiudere le connessioni prima di terminare il programma.
Inoltre per creare le tabelle usa la sintassi "create cached table..."
HTH
pole
-- 
ammentos - a lightweight persistence framework for JDK5
http://www.sourceforge.net/projects/ammentos
http://ammentos.biobytes.it

 
La sparo: hai fatto commit dopo aver creato le tabelle?
Non è che non mi fidi, però...non si sa mai...
-- 
  -- + Setaceous Pig + --
http://megadix.users.mcs2.netarray.com/
http://www.jroller.com/page/megadix/

 di dati, ma gli altri (.properties, .log, .lck, .script) rimangono!
il file .script mantiene i dati quando crei tabelle non cached
se apri il file .script vedrai tutti i comandi con cui il db, ogni volta 
avviato, ricrea le tabelle e le riempie con i dati..
devi creare una cached table per tenerle dentro il file .data
anche se in effetti sembra strano che all'avvio successivo la tabella non 
venga ricaricata.. 

 chiudendo male.
Si penso che il problema sia proprio qui dove dici tu, ora sto provando
eseguendo il comando "SHUTDOWN" prima di fare il close() e sembra
funzionare. Ma è normale questa cosa?
Poi visto che ci sono se faccio una connessione al database con un programma 
e un'altra connessione da un altro mi dice che un processo sta già 
utilizzando il db, non riesco ad accedervi neanche in lettura! So che 
c'entra il file .lock ma non so che farci, spero il db non possa essere 
usato da una sola persona per volta!
Grazie mille a tutti!!

 usato da una sola persona per volta!
Questo è sempre dovuto al fatto che stai utilizzando hsqldb in modalità 
in-process. In questa modalità il database è proprietà esclusiva del 
processo all'interno del quale il db è eseguito. Se vuoi poterti 
connettere al db da più client devi utilizzare la modalità server.
Questi dettagli sono spiegati bene qui:
http://www.hsqldb.org/doc/guide/ch01.html#N100F6
ciao
