Autore Topic: Consiglio su utilizzo del db  (Letto 702 volte)

Offline Trigun

  • Utente normale
  • ***
  • Post: 183
  • Respect: +4
    • Mostra profilo
Consiglio su utilizzo del db
« il: 07 Maggio 2011, 13:49:59 CEST »
0
ciao a tutti ^^
sto facendo 1 applicazione che mi mostra una lista che viene caricata da 1 db ed e' fatta in questo modo:
(Text) NOME (button) - (editbox) NUMERO (button) +

praticamente quando apro l'app mi apre il db fa la query e stampa i risultati in questa listview...
ora il problema e' questo

quando io premo sul + o sul - (o anche quando edito a mano il box) vorrei che mi salvasse la modifica sul db...
per fare questo come mi conviene fare?
io avevo pensato a 2 opzioni

opzione 1
apro il db
carico i dati
chiudo il db
ad ogni evento
riapro il db
modifico
chiudo il db


questa mi pare molto brutta come cosa perche' stai sempre ad aprire e chiudere il db che credo abbia 1 costo alto

opzione 2
apro il db
carico i dati
ad ogni evento
modifico il db
per l'evento onDestroy dell'app
chiudo il db

come soluzione mi pare migliore, ma non so che effetto possa avere un database aperto permanente...
(magari potrei chiuderlo anche su onpause e riaprirlo sul restart, ma la differenza non e' molta)

voi cosa consigliate?
ci sono soluzioni migliori da adottare o devo usar 1 delle mie?

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Consiglio su utilizzo del db
« Risposta #1 il: 07 Maggio 2011, 14:32:55 CEST »
0
Dipende da quante modifiche pensi di fare mediamente.. Se il numero è basse va bene anche aprirlo e chiuderlo ogni volta.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline Trigun

  • Utente normale
  • ***
  • Post: 183
  • Respect: +4
    • Mostra profilo
Re:Consiglio su utilizzo del db
« Risposta #2 il: 07 Maggio 2011, 15:37:20 CEST »
0
se ci sono 1000 entry credo ci saranno 1000 modifiche anche perche' se nel campo c'e' 0 e bisogna mandarlo a 3 o a 2 e' + veloce premere 2/3 volte il + che premere sull'editbox (aspettare che esca la tastiera) e scrivere 3 ...

credo che il db completo si aggiri sui 2000 risultati... anche se poi alcuni vengono filtrati, ma in genere si passa su tutti ...
quindi appunto considerando che ci sono gli 0 ma ci son anche i 2 e 3 credo che il rapporto sia 1:1...

infatti per questo l'opzione 1 l'avevo scartata all'inizio... pero' anche l'opzione 2 non so quanto e' conveniente perche' ti tiene il db sempre aperto... e in genere non e' buono...

ad es se si ha il db aperto e crasha che succede? si corrompe il db?
se si tiene il db aperto quanto influenza le prestazioni?

anche perche' il db apparte i dati statici che son quelli che generano la lista ... conterra' un sacco di dati che vengono generati e salvati (i numeri vengono salvati ogni volta in modo da fare in futuro calcoli statistici e sfruttare lo storico)

quindi suppongo che alla fine diverra' parecchio pesante come db... e tenerlo caricato fisso in memoria non so se convenga...

un altra possibile soluzione che mi e' venuta in mente potrebbe esser quella di lanciare un servizio che ogni tot tempo salva tutto oppure che immagazzini le modifiche fatte e le salvi ogni tot tempo (e qui prevedo bugs:P)...
« Ultima modifica: 07 Maggio 2011, 15:38:54 CEST da Trigun »

Offline Trigun

  • Utente normale
  • ***
  • Post: 183
  • Respect: +4
    • Mostra profilo
Re:Consiglio su utilizzo del db
« Risposta #3 il: 07 Maggio 2011, 21:54:30 CEST »
0
altra cosa... come posso fare per passare il db alla classe quando faccio il click?

Codice (Java): [Seleziona]
sottrai.setOnClickListener(new OnClickListener() {

                               
                                @Override
                                public void onClick(View v) {
                                        EditText quantitaEditText = (EditText) ((View) v.getParent()).findViewById(R.id.quantita);
                                        String s = quantitaEditText.getText().toString();
                                        Integer i = Integer.parseInt(s) -1;
                                        quantitaEditText.setText(i+"");
                                }
                        });

come faccio a passargli il db? dove lo metto il parametro? :P


*edit*
risolto :)
ho semplicemente creato 1 classe nuova al posto della versione compressa :)
« Ultima modifica: 07 Maggio 2011, 22:31:02 CEST da Trigun »