Differenze tra le versioni di "Utilizzo base di Gambas e Sqlite3"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "=Gambas e Sqlite= (pagina a cura di Fea Sergio - f.surfing@tiscali.it) Questo piccolo articolo vuole essere una semplice guida all'utilizzo base di Gambas e ''Sqlite3'', ri...")
 
Riga 7: Riga 7:
  
  
=Creazione di un database=
+
==Creazione di un database==
 
Il primo passo che dovremo realizzare sarà appunto creare un database adatto alle nostre esigenze, per far ciò utilizziamo la classe connection del componente '''''gb.db'''''.
 
Il primo passo che dovremo realizzare sarà appunto creare un database adatto alle nostre esigenze, per far ciò utilizziamo la classe connection del componente '''''gb.db'''''.
  
Riga 92: Riga 92:
 
  End
 
  End
  
 +
 +
==Aggiunta di un record==
 +
Ora che abbiamo un bel '''db''' nuovo fiammante dobbiamo inserire i dati all' interno, supponiamo di inserire i dati richiesti in 3 ''textbox'' e di effettuare la memorizzazione con un pulsante, il nostro codice sarà:
 +
Public Sub Button2_Click()
 +
 +
  Dim sName As String ' sName è una variabile che indica il nome che diamo al nostro database
 +
  Dim sPercorso As String ' indica il percorso in cui andremo a creare il db
 +
  Dim $hConn As New Connection
 +
  Dim hres As Result
 +
  Dim sql As String
 +
 
 +
<FONT Color=gray>' ''controllo dati inseriti''</font>
 +
  'sData = TextBox4.Text
 +
 
 +
  If TextBox1.Text = "" Or TextBox2.text = "" Or TextBox3.text = "" Or TextBox4.text = "" Then
 +
<FONT Color=gray>' ''controllo che siano inseriti dei valori nei campi richiesti''</font>
 +
    Message.Error("Completare tutti i campi", "OK")
 +
  Else
 +
    sName = "prova"
 +
 
 +
    sPercorso = User.Home  <FONT Color=gray>' ''definiamo come percorso la nostra home''</font>
 +
 
 +
    With $hConn
 +
      .Type = "sqlite3"  <FONT Color=gray>' ''indicazione del tipo di database da utilizzare''</font>
 +
      .Host = sPercorso
 +
      &#39;&#39;&#39;.Login = ""
 +
      ' .Password = ""
 +
    End With
 +
   
 +
    $hConn.Name = sName
 +
    $hConn.Open
 +
 
 +
    $hconn.Begin
 +
   
 +
    hres = $hconn.Create("biblio")  <FONT Color=gray>' ''collega il result hres alla tavola prova in modalità creazione record''</font>
 +
 
 +
    hres!nome = TextBox1.Text  <FONT Color=gray>' ''scrittura dei vari campi del record''</font>
 +
    hres!cognome = TextBox2.Text
 +
    hres!indirizzo = TextBox3.Text
 +
   
 +
    hres.Update
 +
 
 +
    $hConn.Commit
 +
    $hConn.Close
 +
 
 +
    textbox1.text=""
 +
    textbox2.text=""
 +
    textbox3.text=""
 +
    label1.text = "aggiunta record effettuata"
 +
 +
  Endif
 +
 
 +
End
 +
 +
 +
==Ricerca dati==
 +
la ricerca dati sarà probabilmente l' operazione che verrà compiuta maggiormente in un db in quanto necessaria in altre operazioni come la modifica di un record o la cancellazione , in questo esempio effettueremo una ricerca per nome e visualizzeremo i dati in una GridView.
 +
 +
Aggiungiamo quindi al nostro form un textbox4 dove scriveremo il testo da ricercare ed una ''gridview''.
 +
 +
Nella funzione ''TextBox4_Change( )'' inseriremo il codice per effettuare la ricerca, in questo modo scrivendo la parola da ricercare verranno visualizzate tutte le corrispondenze.
 +
 +
Logicamente prima di fare una ricerca dovremo aver inserito dei dati all' interno del db!
 +
 +
Come prima cosa dovremo collegarci al db tramite il solito metodo , una volta "connessi" per effettuare una ricerca utilizzeremo il metodo connection.Exec fornendogli una query SQL per la ricerca.
 +
 +
A seconda di ciò che vogliamo cercare useremo ''query'' diverse, nel nostro caso dobbiamo utilizzare una query che ricerchi nella colonna nome tutti i record che contengono il testo contenuto in ''textbox4'':
 +
sql = "SELECT * FROM biblio WHERE nome LIKE '%" & textbox4.Text & "%'"
 +
I caratteri % indicano un qualsiasi valore (carattere jolly).
 +
 +
quindi daremo la query in pasto al db:
 +
hres = $hconn.Exec(sql)
 +
Nel result "hres" sono presenti tutti i record che soddisfano la nostra ricerca, ora dobbiamo visualizzarli nella gridview , possiamo farlo con un ciclo FOR EACH su hres:
 +
  For Each hres
 +
    GridView1[i, 0].Text = hres!id
 +
    GridView1[i, 1].Text = hres!nome
 +
    GridView1[i, 2].Text = hres!cognome
 +
    GridView1[i, 3].Text = hres!indirizzo
 +
    i = i + 1
 +
  Next
 +
Il primo valore nelle parentesi quadre indica il numero del record su cui scrivere ed il secondo il numero di colonna, i dati da estrapolare si indicano scrivendo il nome del result seguito da un punto esclamativo seguito dal nome del campo del db.
 +
 +
Oppure si puo utilizzare questo tipo di codice :
 +
  For Each hres
 +
    GridView1[i, 0].Text = hres[0]
 +
    GridView1[i, 1].Text = hres[1]
 +
    GridView1[i, 2].Text = hres[2]
 +
    GridView1[i, 3].Text = hres[3]
 +
    i = i + 1
 +
  Next
 +
Et voilà , mentre digitiamo una parola nel campo ricerca la ''gridview'' ci visualizzerà tutte le rispondenze, il codice completo della funzione sarà il seguente:
 +
Public Sub TextBox4_Change()
 +
 +
  Dim sName As Strings  <FONT Color=gray>' ''Name è una variabile che indica il nome che diamo al nostro database''</font>
 +
  Dim sPercorso As String  <FONT Color=gray>' ''indica il percorso in cui andremo a creare il db''</font>
 +
  Dim $hConn As New Connection
 +
  Dim hres As Result
 +
  Dim sql As String
 +
  Dim i As Integer
 +
 
 +
 
 +
 
 +
 
  
  

Versione delle 16:40, 5 gen 2017

Gambas e Sqlite

(pagina a cura di Fea Sergio - f.surfing@tiscali.it)


Questo piccolo articolo vuole essere una semplice guida all'utilizzo base di Gambas e Sqlite3, rivolto a chi effettua i primi passi con questo linguaggio di programmazione ed ha necessità di realizzare un applicazione stand-alone che debba immagazzinare una certa quantità di dati in db.


Creazione di un database

Il primo passo che dovremo realizzare sarà appunto creare un database adatto alle nostre esigenze, per far ciò utilizziamo la classe connection del componente gb.db.

Questa classe ha bisogno di alcuni parametri che andremo a fornirgli in questo modo:

 Dim sName AS String   ' sName è una variabile che indica il nome che diamo al nostro database
 Dim sPercorso as String   ' indica il percorso in cui andremo a creare il db
 Dim$hConn as NEW Connection
 
 sName=”prova”
 sPercorso=user.home      ' definiamo come percorso la nostra home
 
 With $hConn
   .Type = "sqlite3"   ' indicazione del tipo di database da utilizzare
   .Host = sPercorso
   .Login = ""
   .Password = ""
 End With

a questo punto possiamo procedere alla creazione verificando però che il db non sia già presente altrimenti visualizzeremo una finestra di errore:

 $hConn.Open
 
 If Not $hConn.Databases.Exist(sName) Then   ' verifica che il db non esista
   $hConn.Databases.Add(sName)
' crea il nostro db
 Else
   Message.Error("database già esistente", "OK")
 Endif
 
 $hConn.Close

Così abbiamo creato il nostro db ma non ha ancora nessuna tabella all' interno e quindi è inutilizzabile, per realizzare la struttura possiamo utilizzare la funzione .tablefields.add oppure sfruttare un query SQL .

Considerando la seconda ipotesi e volendo creare una tabella di nome "biblio" con dei dati biografici quali:

nome
cognome
indirizzo

procederemo con una query di questo tipo:

sql = "CREATE TABLE 'biblio' ( 'id' INTEGER PRIMARY KEY AUTOINCREMENTAL, 'nome' VARCHAR(255) DEFAULT NULL, 'cognome' VARCHAR(255) DEFAULT NULL, 'indirizzo' VARCHAR(255) DEFAULT NULL);"

il tutto scritto in un unica riga.

Si noti il campo “id” che contiene l' indice del database ed è di tipo integer autoincrementante (ovvero ogni volta che inseriamo un record il rispettivo id verrà inserito automaticamente.

Tutti gli altri campi io per abitudine li creo di tipo testo con lunghezza 255 caratteri.


Quindi il nostro codice per la creazione del db sarà cosi modificato:

Public Sub Button1_Click()

 Dim sName As String   ' sName è una variabile che indica il nome che diamo al nostro database
 Dim sPercorso As String   ' indica il percorso in cui andremo a creare il db
 Dim $hConn As New Connection
 Dim sql As String
 Dim htable As Result
 
 sName = "prova"
 sPercorso = User.Home   ' definiamo come percorso la nostra home
 
 With $hConn
   .Type = "sqlite3"   ' indicazione del tipo di database da utilizzare
   .Host = sPercorso
   '".Login = ""
   ' .Password = ""
 End With
 
 $hConn.Open
 
 If Not $hConn.Databases.Exist(sName) Then   ' verifica che il db non esista
   $hConn.Databases.Add(sName)   ' crea il nostro db
   $hConn.Close   ' chiude il db
   $hConn.Name = sName
   $hConn.Open()   ' riapre il db per l' aggiunta della tabella
   
' scrivere la query su un unica riga oppure separarla con i separatori &
   sql = "CREATE TABLE 'biblio' ( 'id' INTEGER PRIMARY KEY, 'nome' VARCHAR(255) DEFAULT NULL, 'cognome' VARCHAR(255) DEFAULT NULL, 'indirizzo' VARCHAR(255) DEFAULT NULL);"
 
   hTable = $hConn.EXEC(sql)
 
   $hConn.Commit
   Label1.Text = "Database creato"
 Else
   Message.Error("database già esistente", "OK")
 Endif
 
 $hConn.Close
 
End


Aggiunta di un record

Ora che abbiamo un bel db nuovo fiammante dobbiamo inserire i dati all' interno, supponiamo di inserire i dati richiesti in 3 textbox e di effettuare la memorizzazione con un pulsante, il nostro codice sarà:

Public Sub Button2_Click()

 Dim sName As String ' sName è una variabile che indica il nome che diamo al nostro database
 Dim sPercorso As String ' indica il percorso in cui andremo a creare il db
 Dim $hConn As New Connection
 Dim hres As Result
 Dim sql As String
 
' controllo dati inseriti
 'sData = TextBox4.Text
 
 If TextBox1.Text = "" Or TextBox2.text = "" Or TextBox3.text = "" Or TextBox4.text = "" Then
' controllo che siano inseriti dei valori nei campi richiesti
   Message.Error("Completare tutti i campi", "OK")
 Else
   sName = "prova"
 
   sPercorso = User.Home   ' definiamo come percorso la nostra home
 
   With $hConn
     .Type = "sqlite3"   ' indicazione del tipo di database da utilizzare
     .Host = sPercorso
     '''.Login = ""
     ' .Password = ""
   End With
   
   $hConn.Name = sName
   $hConn.Open
 
   $hconn.Begin
   
   hres = $hconn.Create("biblio")   ' collega il result hres alla tavola prova in modalità creazione record
 
   hres!nome = TextBox1.Text   ' scrittura dei vari campi del record
   hres!cognome = TextBox2.Text
   hres!indirizzo = TextBox3.Text
   
   hres.Update
 
   $hConn.Commit
   $hConn.Close
 
   textbox1.text=""
   textbox2.text=""
   textbox3.text=""
   label1.text = "aggiunta record effettuata"
 Endif
 
End


Ricerca dati

la ricerca dati sarà probabilmente l' operazione che verrà compiuta maggiormente in un db in quanto necessaria in altre operazioni come la modifica di un record o la cancellazione , in questo esempio effettueremo una ricerca per nome e visualizzeremo i dati in una GridView.

Aggiungiamo quindi al nostro form un textbox4 dove scriveremo il testo da ricercare ed una gridview.

Nella funzione TextBox4_Change( ) inseriremo il codice per effettuare la ricerca, in questo modo scrivendo la parola da ricercare verranno visualizzate tutte le corrispondenze.

Logicamente prima di fare una ricerca dovremo aver inserito dei dati all' interno del db!

Come prima cosa dovremo collegarci al db tramite il solito metodo , una volta "connessi" per effettuare una ricerca utilizzeremo il metodo connection.Exec fornendogli una query SQL per la ricerca.

A seconda di ciò che vogliamo cercare useremo query diverse, nel nostro caso dobbiamo utilizzare una query che ricerchi nella colonna nome tutti i record che contengono il testo contenuto in textbox4:

sql = "SELECT * FROM biblio WHERE nome LIKE '%" & textbox4.Text & "%'"

I caratteri % indicano un qualsiasi valore (carattere jolly).

quindi daremo la query in pasto al db:

hres = $hconn.Exec(sql)

Nel result "hres" sono presenti tutti i record che soddisfano la nostra ricerca, ora dobbiamo visualizzarli nella gridview , possiamo farlo con un ciclo FOR EACH su hres:

 For Each hres
   GridView1[i, 0].Text = hres!id
   GridView1[i, 1].Text = hres!nome
   GridView1[i, 2].Text = hres!cognome
   GridView1[i, 3].Text = hres!indirizzo
   i = i + 1
 Next

Il primo valore nelle parentesi quadre indica il numero del record su cui scrivere ed il secondo il numero di colonna, i dati da estrapolare si indicano scrivendo il nome del result seguito da un punto esclamativo seguito dal nome del campo del db.

Oppure si puo utilizzare questo tipo di codice :

 For Each hres
   GridView1[i, 0].Text = hres[0]
   GridView1[i, 1].Text = hres[1]
   GridView1[i, 2].Text = hres[2]
   GridView1[i, 3].Text = hres[3]
   i = i + 1
 Next
Et voilà , mentre digitiamo una parola nel campo ricerca la gridview ci visualizzerà tutte le rispondenze, il codice completo della funzione sarà il seguente:
Public Sub TextBox4_Change()

 Dim sName As Strings   ' Name è una variabile che indica il nome che diamo al nostro database
 Dim sPercorso As String   ' indica il percorso in cui andremo a creare il db
 Dim $hConn As New Connection
 Dim hres As Result
 Dim sql As String
 Dim i As Integer
 
 
 
 







Pagina in costruzione !