Ti consiglio un ottimo frontend, Knoda.
In genere è presente nei repo di quasi tutte le distro.
Si connette a diversi DB quali MySQL, Postgre e SQLite.
Io lo uso per creare e modificare semplicemente le tabelle dei miei DB, veramente comodo.
P.S.:
non so se ti possono tornare utili questi frammenti di codice per capire come usare le query SQL con gli oggetti Connection e Result.
Con questo salvi dei dati in una tabella:
PRIVATE SUB Salva_dati()
DIM Connessione AS NEW Connection
DIM Risultato AS Result
'-- connetti al database
Connessione.Name = Application.Path & "/archivio"
Connessione.Type = "sqlite3"
Connessione.OPEN
'-- scelta della tabella
Risultato = Connessione.Edit("codici", "tipo = &1", comodo)
Risultato["nome_campo"] = Nuovovalore '-- inserimento valore nel campo
(...)
Risultato.Update '-- istruzione di aggiornamento
Connessione.Commit '-- forza il database ad eseguire
'-- tutte le operazioni pendenti
Connessione.CLOSE '-- chiusura
END
Creazione di una nuova scheda anagrafica:
PRIVATE SUB Crea_dati()
DIM Connessione AS NEW Connection
DIM Risultato AS Result
'-- connetti al database
Connessione.Name = Application.Path & "/archivio"
Connessione.Type = "sqlite3"
Connessione.OPEN
'-- salvataggio nuovo contatto
Risultato = Connessione.Create("anagrafica")
Risultato["codice"] = codice
Risultato["cognome"] = txtCognome.Text
Risultato["nome"] = txtNome.Text
Risultato["indirizzo"] = txtIndirizzoNom.Text
Risultato["citta"] = txtCapNom.Text
Risultato.Update
Connessione.Commit
Connessione.CLOSE
END
Cerchi qualcosa? Ecco il codice:
(...)
Connessione.Name = Application.Path & "/archivio"
Connessione.Type = "sqlite3"
Connessione.OPEN
Risultato = Connessione.Find("anagrafica", "codice = &1", Codice)
IF Risultato.Available = FALSE THEN
Message.Info("Nessun dato trovato")
RETURN
ENDIF
(...)
Trova nella tabella "anagrafica" il contatto con il codice uguale a
Codice. Il database SQLite3 lo puoi creare o da console di SQLite oppure
usando ad esembio Knoda, un front-end grafico per diversi tipi di database.[/code]
grazie per il codice, me lo guardo...io accedo al database con una piccola classe da me creata e poi eseguo tutte le operazioni variando esclusivamente la sql (di inserimento/eliminazione/modifica...)...ecco la classe:
PUBLIC conn AS NEW Connection
PUBLIC connesso AS Boolean
PUBLIC SUB _new(OPTIONAL mytype AS String, OPTIONAL myhost AS String, OPTIONAL mydb AS String, OPTIONAL myuserid AS String, OPTIONAL mypassword AS String)
IF (connesso = FALSE) THEN
WITH conn
.type = mytype
.host = myhost
.login = myuserid
.password = mypassword
.name = mydb
END WITH
TRY conn.Open
IF ERROR THEN
message("Non posso aprire il database. Errore " & Error.Text)
END IF
connesso = TRUE
END IF
END
PUBLIC FUNCTION EseguiSql(mysql AS String) AS Result
'LETTURA TABELLA MyResult = MySqlite.EseguiSql("select * FROM test")
'NUOVO RECORD MyResult = MySqlite.EseguiSql("INSERT into test (id) values (555)"
'AGGIORNO RECORD MyResult = MySqlite.EseguiSql("UPDATE test valore1=12 WHERE id=1")
RETURN conn.Exec(mysql)
END
knoda lo conoscomi piace anke se sembra che ultimamente non è stato molto sviluppato. Diro' una cosa 'eretica' ma con virtualbox uso sqlitemaestro che permette di fare query visuali stile access... a dire il vero mi piacerebbe creare il clone di Access con gambas...manca un programma database di livello.
Pensa ad un database con la qualità di interfaccia di pgDesigner.
ciao
Access clone, ho già il nome, che sa di presa per i fondelli, ma suona proprio bene: GACCESS..
Se vogliamo unire le forze sono a disposizione. Knoda, Kexi, Rekall mi sembrano fermi o sbaglio. L'occasione x diventare un punto di riferimento c'è.
Scusa l'avevo tralasciata , ecco un esempio pratico di applicazione della mia classe:
MySqlite AS dbConnection 'istanza della classe dbConnection
MyResult AS Result 'risultato della query tipicamente un recordset
PUBLIC SUB Form_Open()
MySqlite = NEW dbConnection("sqlite3", "", "diet.db", "", "") 'connessione
END SUB
PUBLIC SUB CaricaAlimenti()
DIM counter AS Integer
MyResult = MySqlite.EseguiSql("SELECT idalimento, alimento FROM tbALIMENTI ORDER BY alimento ASC")
MyResult.movefirst
lstALIMENTI.Clear
counter = 0
FOR EACH MyResult
counter = counter + 1
lstALIMENTI.Add(MyResult!alimento)
NEXT
END
come vedi è di una semplicità estrema. Mia intenzione è migliorare ulteriormente la classe, con una routine che automatizzi la creazione delle sql, cosa interessante soprattutto quando i campi delle tabelle sono numerosi. Che ne pensi?
ATTENZIONE
Una cosa che per ora non riesco a risolvere direttamente è l'attribuzione del valore aggiunto alla listbox. Mentre col VB è possibile aggiungere alla list box un valore comprensivo anche della suo valore di chiave (id), mi sembra che questo non sia possibile con gambas, il controllo listbox permette l'inserimento di un valore stringa e di un indice che risulta essere la posizione nella listbox , non certo l'id (nel caso sopra mi riferisco al valore di idalimento).