|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2007
Città: Viterbo
Messaggi: 2559
|
[Java] Come salvare i dati?
Ho intenzione di sviluppare un piccolo programmino che mi permetta di tenere la contabilità personale, cioè segnare entrate, uscite, valore dei depositi e dei debiti e poco altro. Lo faccio per uso personale, ma non è detto che se venisse fuori un bel programma non lo potrei rendere freeware o open, ma ora come ora il discorso è prematuro e credo ininfluente al fine della domanda.
Quello che volevo sapere però è come salvo i dati? Alla fine credo si tratterebbe di semplici tabelle con scritto la data, l'ammontare del movimento, una piccola descrizione e poco altro, o ancora più semplicemente per i depositi una hashmap con scritto il nome e il valore monetario in esso contenuto. Dovrei cercare un sistema che mi salvi il tutto in maniera da poter fare poi un backup dei dati in caso di format o da trasportare su pc diversi. Avevo pensato a un database SQL, ma non conosco il linguaggio e non saprei da dove partire, nel caso fosse molto conveniente quest'ultima opzione sarei anche disposto ad imparare un po' di sql...
__________________
Coolermaster Centurion 590 - Asus M4A78PRO - Phenom II 720 - HIS 6950 IceQ X Turbo 2GB - 2x2 Gb Corsair XMMS2 - Crucial MX300 500gb - HD WD 500gb - Asus VW246H - Windows 7 Pro 64bit
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
|
Potresti crearti un tuo "Contenitore" che implementi Serializable, e poi salvarlo direttamente su file sotto forma di oggetto. Oppure se preferisci usare una HashMap, gia implementa quell'interfaccia
__________________
iMac 27" 5K |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jul 2005
Messaggi: 291
|
Bhe, o come hai detto tu su un DB (che penso sia la soluzione migliore) o su files.
Su files ti puoi inventare un tuo formato di salvataggio (del tipo prima riga prima posizione la data poi uno spazio l'ammontare e così via) o ti crei una classe che rappresenta la cosa da salvare e la fai implementare serializable, così la scrivi/leggi sul/dal disco con un ObjectOutputStream/ObjectInputStream sulla falsa riga di Codice:
public class Movimentazione implements java.io.Serializable{
private java.util.GregorianCalendar dataMovimentazione;
private double ammontareMovimentazione;
private String commentoMovimentazione;
//Getter e (eventuali) setter
}
public class Contabilita{
private java.util.Set<Movimentazione> movimentazioni;
public boolean aggiungiMovimentazione(Movimentazione m){
return this.movimentazioni.add(m);
}
public void salvaSuFile(String filePath) throws java.io.IOException{
java.io.FileOutputStream fos=new java.io.FileOutputStream(filePath);
java.io.ObjectOutputStream oos=new java.io.ObjectOutputStream(fos);
for (Movimentazione m:this.movimentazioni){
oos.writeObject(m);
}
oos.close();
fos.close();
}
public void leggiDaFile(String filePath) throws java.io.IOException{
java.io.FileInputStream fis=new java.io.FileInputStream(filePath);
java.io.ObjectInputStream ois=new java.io.ObjectInputStream(fis);
Object in=ois.readObject();
while(in!=null){
this.movimentazioni.add((Movimentazione)in);
in=ois.readObject();
}
ois.close();
fis.close();
}
}
__________________
CPU: Intel Core 2 Quad Q6600 - Mobo: Asus P5E - RAM:4x2GB DDR2 - sk video: Power Color ATI Radeon HD3870 - HD:Western Digital 750GB |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Aug 2007
Città: Viterbo
Messaggi: 2559
|
Ma usare un database sql non mi costringe poi ad installare anche il server sql? A quel punto diventa troppo complicato, mentre salvando gli oggetti posso gestire tutto tramite il programma in java e basta, no?
__________________
Coolermaster Centurion 590 - Asus M4A78PRO - Phenom II 720 - HIS 6950 IceQ X Turbo 2GB - 2x2 Gb Corsair XMMS2 - Crucial MX300 500gb - HD WD 500gb - Asus VW246H - Windows 7 Pro 64bit
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22462
|
in realtà esistono molti database sql embendeb, comunque secondo me la cosa migliore è la serializzazione tramite le classi XMLEncoder/XMLdecoder, che permettono di non perdere i dati se cambi la struttura dell'oggetto
__________________
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 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:15.




















