|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jul 2008
Città: Sardegna
Messaggi: 1005
|
[JAVA] Consigli su DataBase file-based.
Come da titolo vorrei creare un programmino che operi su un database in locale e che sia portabile all'ennesima potenza.
In pratica vorrei un file JAR con il programma e un file per il database. L'utente deve poter scegliere dal programma di creare un nuovo DB oppure aprirne uno salvato precedentemente. Di conseguenza si deve avere l'opportunità di copiare solamente il file del database e di utilizzarlo in qualsiasi altro PC con lo stesso programma (ovviamente che abbia una JVM). Cercando qua e la ho capito che mi serve un database file-based (non client/server stile JDBC). Ho trovato HSQLDB, ma vorrei sapere se ne esiste qualcun altro che non necessiti di installazioni o configurazioni. Avete avuto esperienze a riguardo? ![]()
__________________
Aeroengine II BBA Black | Asus P5N-T Deluxe 780i | Intel E8400 C0 @4,050Ghz 1,35v + TR Ultra-120 eXtreme | Corsair 2x2GB PC6400 XMS2 DHX @900Mhz 2,15v | XFX 8800 GT 512MB @730/990 + TR HR-03 Rev. A | Tagan TG500-BZ | Zalman ZM-MFC2 Fan Control | WD Raptor 10000rpm 150 GB + 1,5TB | Iiyama ProLite E2607WSV Ultima modifica di LacioDromBuonViaggio : 07-04-2009 alle 16:34. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
io mi trovo bene con oracle berkeley db.
Crea più di un file in una stessa cartella per cui si tratterebbe di copiare questa cartella. Se ti serve un file unico e la quantità di dati non è eccessiva (diciamo qualche centinaio di migliaia di record) puoi usare un logger.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#3 | ||
Senior Member
Iscritto dal: Jul 2008
Città: Sardegna
Messaggi: 1005
|
Quote:
Richiede installazioni o configurazioni varie? Avrei bisogno che possa essere utilizzato in qualsiasi macchina che abbia installato il pacchetto 'standard' di JAVA. Quote:
Mi faccio un giro su google per istruirmi su questi logger ![]()
__________________
Aeroengine II BBA Black | Asus P5N-T Deluxe 780i | Intel E8400 C0 @4,050Ghz 1,35v + TR Ultra-120 eXtreme | Corsair 2x2GB PC6400 XMS2 DHX @900Mhz 2,15v | XFX 8800 GT 512MB @730/990 + TR HR-03 Rev. A | Tagan TG500-BZ | Zalman ZM-MFC2 Fan Control | WD Raptor 10000rpm 150 GB + 1,5TB | Iiyama ProLite E2607WSV Ultima modifica di LacioDromBuonViaggio : 07-04-2009 alle 17:09. |
||
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
berkeley db è free e si tratta di un file jar di 1 megabyte circa che andrebbe a far parte delle librerie del tuo programma.
Non un database SQL.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Jul 2008
Città: Sardegna
Messaggi: 1005
|
Quote:
Comunque cercherò notizie perchè potrebbe interessarmi. Magari per avere un solo file JAR potrei inserire questa libreria all'interno del programma, sarà possibile? Per quanto riguarda i logger non trovo sufficiente documentazione, sembra di capire che creino dei file .log che non hanno niente a che fare con database relazionali, giusto? Se così fosse come poteri gestirli per eventuali richieste?
__________________
Aeroengine II BBA Black | Asus P5N-T Deluxe 780i | Intel E8400 C0 @4,050Ghz 1,35v + TR Ultra-120 eXtreme | Corsair 2x2GB PC6400 XMS2 DHX @900Mhz 2,15v | XFX 8800 GT 512MB @730/990 + TR HR-03 Rev. A | Tagan TG500-BZ | Zalman ZM-MFC2 Fan Control | WD Raptor 10000rpm 150 GB + 1,5TB | Iiyama ProLite E2607WSV Ultima modifica di LacioDromBuonViaggio : 07-04-2009 alle 17:27. |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
un logger tradizionalmente è qualcosa che accoda dei messaggi.
si può usare come database accoppiandolo ad una struttura dati in memoria. In pratica quando crei un recordo lo salvi nella struttura dati in memoria (tipo lista.add(record)) e emetti un messaggio "crea record" nel logger, che lo salva sul file di log. Quando modifichi un record modifichi il record nella struttura dati ed emetti un messaggio "modifica record" nel logger. Lo stesso vale per l'eliminazione. Pare strano ma questo completa il database. Quando l'applicazione si avvia per ricostruire il database altro non fai che leggere i messaggi che il logger ha scritto nel file di log, applicandoli ad una struttura dati inizialmente vuota. Il limite al numero di record deriva dalla necessità di mantenere in memoria tutti i dati. La conservazione dei dati è garantita anche in caso di disastro (genere inciampo nel cavo e si spegne il pc) e le prestazioni in lettura sono eccellenti. E' anche una cosa molto rapida da scrivere. Si tratta di un paio di centinaia di righe di codice al massimo.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Io mi trovo bene con H2. E' il successore di HSQLDB, è un db relazionale, ha gestione delle transazioni, un ottimizzatore a costi, ricerca fulltext, può girare in modalità embedded o client/server, e il footprint del jar da includere è solo di 1 mb (poi ha altre cose fighe tipo la possibilità di criptare il db, e altro...)
Ah, e poi ha un bel pò di documentazione. Dacci un occhio. http://www.h2database.com
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22462
|
io di solito quando ho necessità simili mi appoggio ai porting di sqlite per java come
http://www.zentus.com/sqlitejdbc/
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza |
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Jul 2008
Città: Sardegna
Messaggi: 1005
|
Quote:
Conosci qualche guida/tutorial con degli esempi pratici tipo: 1)connessione 2)scrittura 3)disconnessione 4)riconnessione 5)lettura 6)modifica 7)salvataggio 8)disconnessione Poi non ho capito bene come gestisce le password di connessione. Con questa istruzione Codice:
Connection conn = DriverManager.getConnection("jdbc:h2:~/test", "sa", ""); Se io volessi salvare la password su DB (per ora senza hash) e controllarla ad ogni connessione quell'user e password che inserisco nella connessione sono le stesse? Inoltre, provando dei samples, ho notato che mi crea 5 o 6 file nella cartella del database. A me servirebbe solo un file...
__________________
Aeroengine II BBA Black | Asus P5N-T Deluxe 780i | Intel E8400 C0 @4,050Ghz 1,35v + TR Ultra-120 eXtreme | Corsair 2x2GB PC6400 XMS2 DHX @900Mhz 2,15v | XFX 8800 GT 512MB @730/990 + TR HR-03 Rev. A | Tagan TG500-BZ | Zalman ZM-MFC2 Fan Control | WD Raptor 10000rpm 150 GB + 1,5TB | Iiyama ProLite E2607WSV |
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
FireBird è disponibile anche in versione embedded (niente da installare: si copiano i file dentro la cartella dell'applicazione) e genera un solo file per l'intero database.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
#12 | |||
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Quote:
Ad esempio: http://java.sun.com/docs/books/tutorial/jdbc/index.html Quote:
Se non mi ricordo male, quando ti connetti ad un db che non esiste questo viene creato e lo user diventa l'amministratore di quel db (con la password che hai scelto). Quote:
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|||
![]() |
![]() |
![]() |
#13 | ||
Senior Member
Iscritto dal: Jul 2008
Città: Sardegna
Messaggi: 1005
|
Quote:
EDIT: ma con JAVA come lo faccio funzionare?? Quote:
__________________
Aeroengine II BBA Black | Asus P5N-T Deluxe 780i | Intel E8400 C0 @4,050Ghz 1,35v + TR Ultra-120 eXtreme | Corsair 2x2GB PC6400 XMS2 DHX @900Mhz 2,15v | XFX 8800 GT 512MB @730/990 + TR HR-03 Rev. A | Tagan TG500-BZ | Zalman ZM-MFC2 Fan Control | WD Raptor 10000rpm 150 GB + 1,5TB | Iiyama ProLite E2607WSV Ultima modifica di LacioDromBuonViaggio : 07-05-2009 alle 11:31. |
||
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Ci sono dei driver appositi (JDBC?).
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Jul 2008
Città: Sardegna
Messaggi: 1005
|
Controllando qua e là sono giunto alla conclusione che H2, per ora, è il meglio che possa utilizzare. Per il problema dei diversi file con estensione .db potrei provare a creare uno pseudo-archivio da scompattare all'apertura del programma e da compattare al salvataggio (ma questo è un altro problema).
Quindi rinnovo la richiesta d'aiuto in quanto non capisco bene come gestire la connessione. Vorrei che user e pass di accesso al DB risiedano sullo stesso, ma non so se è possibile farlo (credo ci voglia una password per il DB e una per l'utente), sbaglio?
__________________
Aeroengine II BBA Black | Asus P5N-T Deluxe 780i | Intel E8400 C0 @4,050Ghz 1,35v + TR Ultra-120 eXtreme | Corsair 2x2GB PC6400 XMS2 DHX @900Mhz 2,15v | XFX 8800 GT 512MB @730/990 + TR HR-03 Rev. A | Tagan TG500-BZ | Zalman ZM-MFC2 Fan Control | WD Raptor 10000rpm 150 GB + 1,5TB | Iiyama ProLite E2607WSV |
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Mar 2000
Città: Piacenza d'Adige (PD)
Messaggi: 651
|
Ma un .mdb no?
|
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Jul 2008
Città: Sardegna
Messaggi: 1005
|
__________________
Aeroengine II BBA Black | Asus P5N-T Deluxe 780i | Intel E8400 C0 @4,050Ghz 1,35v + TR Ultra-120 eXtreme | Corsair 2x2GB PC6400 XMS2 DHX @900Mhz 2,15v | XFX 8800 GT 512MB @730/990 + TR HR-03 Rev. A | Tagan TG500-BZ | Zalman ZM-MFC2 Fan Control | WD Raptor 10000rpm 150 GB + 1,5TB | Iiyama ProLite E2607WSV |
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Mar 2000
Città: Piacenza d'Adige (PD)
Messaggi: 651
|
Database Access, un file solo, lo prendi e lo porti dove vuoi, non serve avere Access installato per farlo funzionare... Accessibilissimo, ti puoi connettere come vuoi, ci fai quello che vuoi (a patto che non lo usi con un sacco di utenze in contemporanea) |
![]() |
![]() |
![]() |
#19 | |
Senior Member
Iscritto dal: Jul 2008
Città: Sardegna
Messaggi: 1005
|
Quote:
Ma mi rimane il dubbio: con JAVA si può usare?
__________________
Aeroengine II BBA Black | Asus P5N-T Deluxe 780i | Intel E8400 C0 @4,050Ghz 1,35v + TR Ultra-120 eXtreme | Corsair 2x2GB PC6400 XMS2 DHX @900Mhz 2,15v | XFX 8800 GT 512MB @730/990 + TR HR-03 Rev. A | Tagan TG500-BZ | Zalman ZM-MFC2 Fan Control | WD Raptor 10000rpm 150 GB + 1,5TB | Iiyama ProLite E2607WSV |
|
![]() |
![]() |
![]() |
#20 | |
Senior Member
Iscritto dal: Mar 2000
Città: Piacenza d'Adige (PD)
Messaggi: 651
|
Quote:
Beh io l'ho usato con C#, VB, C e C++..... ADO, DAO, OleDB.... Penso proprio di sì... |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:48.