Autore Topic: Connessione sqlite3  (Letto 819 volte)

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.255
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Connessione sqlite3
« il: 09 Settembre 2010, 10:12:03 »
Conviene di più aprire e chiudere la connessione al db quando serve oppure creare una classe che apre la connessione e la chiude e tiene in memoria i recordset che servono?

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Connessione sqlite3
« Risposta #1 il: 09 Settembre 2010, 11:11:01 »
Non è una questione di convenienza, ma di logica applicata.

Di norma, per svariati motivi, si tende a aprire il db quel tanto che basta per scrivere o leggere, e richiuderlo subito ma, se a te serve mantenenrti il rowset, allora sei obbligato a tenerlo aperto, a meno che non crei un'oggettino (un array), su cui ti copy preventivamente i dati del rowset. A quel punto puoi pure chiudere il db.

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Connessione sqlite3
« Risposta #2 il: 09 Settembre 2010, 11:42:35 »
secondo me se si utilizza sqlite potrebbe essere anche valido aprire la connessione una sola volta , per comodità,su mysql invece direi chè d'obbligo aprirla solo per lo stretto necessario, soprattutto se il db viene utilizzato in multiutenza

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.255
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Connessione sqlite3
« Risposta #3 il: 09 Settembre 2010, 13:11:38 »
forse aprire il db all'inizio e lasciarlo aperto è la soluzione da fare (devo modificare il codice cmq) + veloce

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Connessione sqlite3
« Risposta #4 il: 09 Settembre 2010, 14:52:54 »
Tieni però presente che sqlite si può considerare in definitiva come un file, quindi soggetto alle operazioni di bufferaggio del sistema.
Questo per dire che, se non viene chiuso, e accade qualcosa che interrompe il programma (un errore ad esempio), ti potresti perdere gli ultimi dati.
Non sò se e come sqlite lavori, ma data la sua semplicità, e dato che non trattasi di motore un vero e proprio rdbms, potresti incorrere in problemi.
I comandi di rollback e commit non escludono questa casistica.

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.255
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Connessione sqlite3
« Risposta #5 il: 09 Settembre 2010, 17:01:39 »
Tieni però presente che sqlite si può considerare in definitiva come un file, quindi soggetto alle operazioni di bufferaggio del sistema.
Questo per dire che, se non viene chiuso, e accade qualcosa che interrompe il programma (un errore ad esempio), ti potresti perdere gli ultimi dati.
Non sò se e come sqlite lavori, ma data la sua semplicità, e dato che non trattasi di motore un vero e proprio rdbms, potresti incorrere in problemi.
I comandi di rollback e commit non escludono questa casistica.

adesso mi spaventi.... :-\ che in ogni caso il db devo aprirlo x salvare i dati...

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Connessione sqlite3
« Risposta #6 il: 09 Settembre 2010, 23:25:06 »
In programmazione la prudenza non é mai troppa. Effettivamente, a prescindere da quale DB usi, aprire il DB, aggiornarlo  e chiuderlo subito dopo, é senza ombra di dubbio la soluzione pratica più sicura per procedere tranquillo. Meglio quindi non lasciarte spazio a brutte ed inaspettate sorprese.
Ciao.
:ciao:

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Connessione sqlite3
« Risposta #7 il: 10 Settembre 2010, 11:28:59 »
Era un consiglio andy... Non è il caso di spaventarsi... E anche dovuto all'esperienza, e ad una piccola mania nell'eccedere con i controlli...  :P

Comunque, un IF in più non guasta mai...