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:
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
'------------------------------- 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.