Autore Topic: La forma corretta per la connessione di DataBase Sqlite3  (Letto 247 volte)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.242
  • Ne mors quidem nos iunget
    • Mostra profilo
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: La forma corretta per la connessione di DataBase Sqlite3
« Risposta #1 il: 28 Aprile 2015, 22:42:25 »
Ciao vuott.
La tua sbirciatina sul sito spagnolo mi ha incuriosito molto ed ho voluto leggere la discussione che hai indicato.

Ho guardato attentamente i post in essa contenuti, ma non mi piace l'uso di una Function per la gestione di Open e Close di un  DB. Francamente vedo meglio tale gestione all'interno di una classe, in modo da poterla richiamare in qualsiasi altro File.class del programma.
Il passo di codice che ho trovato molto utile è quello relativo al controllo dello stato "OPEN" del DB:
Codice: [Seleziona]
if conn <> Null Then Return False

Io uso già un procedimento simile sin da quando, dopo i primi approcci, ho cominciato a familiarizzare con SQLite3. La mia classe applicativa per la OPEN/CLOSE di un DB é
'------------------------------- OpenDB.Class ------------------------------------------------------------------------------------------
Public DB_Connection As New Connection   'inizializza la nuova connessione

Codice: gambas [Seleziona]

'------------------------------- OpenDB.Class ------------------------------------------------------------------------------------------
Public DB_Connection As New Connection   'inizializza la nuova connessione
Public $_DbPath As String = user.home & "/NomeDiectory"                         'Percorso di ricerca del Database

Public $DbNome As String = "NomeDB"        'Nome del Database

Public bSwOpErr As Boolean

Public Sub _new()
'----------------------------------------
  With
     DB_Connection
          .Close
          .Type = "sqlite3"
          .Host = $DbPath
          .Name = $DbNome
          .OPEN    'Apro il DB
  End With
  bSwOpErr = False    'OPEN eseguita correttamente
  Catch
    bSwOpErr = True     'Errore nella Open
End


Come avrai notato la mia classe OpenDB esegue ogni volta la Close e poi  La Open del DB.
La prima volta che il programma richiama la classe, viene eseguita una La Close inutile, ma siccome non determina errori l'ho lasciata per mantenerne l'efficacia tutte le successive volte in cui il DB sarà già nello status OPEN. Riconosco che la modalità da me scelta a suo tempo comporta impegno di risorse elaborative della CPU. La soluzione spagnola le risparmia.

Non ho scritto il presente messaggio per autocomplimentarmi, né per ricevere complimenti altrui, ma solamente per fare presente che, a parte piccole differenze, quella spagnola e la mia tecnica sono parenti; inoltre, io posso, scusa se mi ripeto, richiamere la mia procedurina in ogni, parte del programma, quella spagnola, essendo una Function, deve essere ripetuta all'interno di ciascun File.Class in cui necessiti.

Aggiungo: qualora qualcuno dovesse notare imperfezioni o volesse suggerire istruzioni migliorative, non ho niente in contrario a modificare quanto già realizzato e funzionante.
 :D :ciao:
:ciao: