Allora sono passato a sqlite3 per il mio progetto (vedi post precedenti).
Prima utilizzando mysql andavo a creare la connessione in un modulo esterno al form, quando dovevo connettermi richiamavo la connessione dal modulo e riusciva a operare sul db senza dover ogni volta ripetere i dati di connessione.
Passando a sqlite3 mi sono detto "ok togliendo nome e pass e dandogli il nome del file che costituisce il db non ci dovrebbero essere probemi" .... furono le mie ultime parole famose ....
Quando richiamo la connessione mi da sempre che non trova il db o che la query non è esatta. Ho provato a fargli passare la query con sqlitebrowser e non ci sono problemi, quindi non trova il db, ho provato vari modi ma l'errore non cambia.
Posto qui sotto il contenuto del modulo ModDb
-------------------------------------------------------------------------------
' Gambas module file
PUBLIC $conn AS NEW Connection
PUBLIC $dbName AS String = "working.db"
PUBLIC $sql AS String
PUBLIC PROCEDURE Connect()
'################## MYSQL
'$conn.Close() 'chiude la connessione
'$conn.Type = "mysql" 'tipo di connessione
'$conn.Host = "localhost"
'$conn.Host = "localhost" 'nome del server
'$conn.Login = "root" 'username della connessione
'$conn.port = "3306" 'porta utilizzata dal database
'$conn.Name = "working" 'nome del database da utilizzare
'$conn.Password = "password-root" 'password di accesso
'$conn.Open() 'apre la connessione
'################## SQLITE3
$conn.Close
WITH $conn
.Type = "sqlite3"
.Host = User.Home
END WITH
$conn.Open
IF (NOT $conn.Databases.Exist($dbName)) THEN
Message.Info("Il DB non esiste", "OK")
'creo il db
$conn.Databases.Add($dbName)
Message.Info("Creo il DB", "OK")
Message.Info("Creo la tabella Utente", "OK")
$sql = "CREATE TABLE utente (attivo NUMERIC, id INTEGER PRIMARY KEY, nome_completo TEXT, uname TEXT, upass TEXT)"
$conn.Exec($sql)
ENDIF
END
PUBLIC SUB Main()
Connect() 'avvia la procedura per la connessione
END
-------------------------------------------------------------------------------
E qui posto la parte da dove parte la chiamata al modulo dal form dove serve operare con il db
--------------------------------------------------------------------------------
'inserimento dati
ModDb.Connect()
ModDb.$conn.Name = "working.db"
$sql = "insert into utente values (1,NULL,'" & $nomeCompleto & "','" & $nomeVisualizzato & "','" & $password & "')"
$result = ModDb.$conn.Exec($sql)
--------------------------------------------------------------------------------
ModDb.$conn.Name = "working.db" l'ho aggiunto dopo anche se non sono mai stato troppo convinto che servi a qualcosa.
Ho provato a operare con la connessione direttamente sul form e non ci sono problemi quindi presumo che l'errore sia nel modulo. Come posso procedere?