divendres, 13 d’agost del 2010

Com accedir a SQLlite amb Gambas2 / 26 juliol 2010

Com accedir a SQLlite amb Gambas

Gambas és un llenguatge Basic per a Linux. El més interessant és que ens proporciona un entorn RAD (Rapid Application Development) de l'estil del Visual Basic prou eficient.

Qualsevol aplicació professional acaba atacant a una base de dades. Una opció interessant a Linux és fer servir SQLite.

La combinació de Gambas i SQLite és, doncs, una possibilitat a tenir en compte a l'hora de desenvolupar aplicacions sobre Linux.

Com utilitzar Gambas i SQLite conjuntament? faré un experiment

Primer de tot crearé una base de dades de SQLite, en aquet cas, d'SQLite2 (podria ser SQLite3)
La base de dades tindrà una taula taula1, amb dues columnes: ID (integer, clau primària) i VALOR (text)

Per a crear la DB podem fer servir la utilitat Gambas2 DB Manager que es proporciona juntament amb la instal·lació de Gambas.

També podria fer servir el client en mode text de SQLite.

Informo algunes dades de prova a taula1

Al Gambas:

Creo un formulari amb una textbox i tres botons (Obtenir, Netejar i Sortir)
Obtenir: mostra el contingut de la taula1
Netejar: esborra la textbox
Sortir: acaba l'aplicació.

Per exemple, alguna cosa així:




El codi BASIC seria el següent:

' Gambas class file
PRIVATE conConnexio AS Connection
PRIVATE trTaulaResultats AS Result
 
PUBLIC SUB _new()
  ' res
END

PUBLIC SUB Form_Open()
  ' res
END

PUBLIC SUB Button1_Click()
  PRINT ("[Button1_Click] Connecta")
  conConnexio = NEW Connection
  conConnexio.Type = "sqlite2"
  conConnexio.Host = "/home/albert/databases/sqlite2"
  conConnexio.Name = "proves.db"
  TRY conConnexio.Open()
  IF ERROR THEN
    Message.Error("Error al connectar amb la base de dades.")
    conConnexio = NULL
  ELSE
    trTaulaResultats = conConnexio.Exec("Select * from taula1")
    Neteja
    WHILE trTaulaResultats.Available
        MostrarCamps
        trTaulaResultats.MoveNext
    WEND
   
conConnexio.Close()
  END IF
END

PUBLIC SUB Button2_Click()
  FMain.Close()
  STOP EVENT
END

PUBLIC SUB Button3_Click()
  Neteja
END

PUBLIC SUB MostrarCamps()
  TextArea1.text = TextArea1.text & "id: " & trTaulaResultats["id"] & "; valor: " & trTaulaResultats["valor"] & Chr(13)
END

PUBLIC SUB Neteja()
  TextArea1.text = ""
END

No hi ha pèrdua possible:

   crea un objecte de connexió
  conConnexio = NEW Connection

  indica que és una connexió del tipus SQLite2, podria ser d'altres: SQLite3, MySQL, Postgres, FireBird...
  conConnexio.Type = "sqlite2"

  indica l'ubicació de la BD a obrir
  conConnexio.Host = "/home/albert/databases/sqlite2"
  conConnexio.Name = "proves.db"

  i obre la connexió. Fixem-nos com obre la connexió dins d'un TRY.
  TRY conConnexio.Open()

  Si hi ha un error, ho indica;
  IF ERROR THEN
    Message.Error("Error al connectar amb la base de dades.")
    conConnexio = NULL
  ELSE
    ...

  i si no, mostra les dades:
   Obté el resultset (fent servir terminologia java), dataset (delphi) o recordset (VB).
    trTaulaResultats = conConnexio.Exec("Select * from taula1")
   
   mentres tingui files per mostrar disponibles (available)
    WHILE trTaulaResultats.Available
   mostra la fila
        MostrarCamps
   avança fins la següent fila
        trTaulaResultats.MoveNext
    WEND
    quan ha recorregut tot el conjunt de resultats, tanca la connexió
    conConnexio.Close()
Per mostrar els resultats recupera el valor de cada columna per nom, els concatena amb una mica de format i afegeix un salt de línea amb Chr(13). tot plegat ho afegeix al contingut preexistent a la textbox

TextArea1.text = TextArea1.text & "id: " & trTaulaResultats["id"] & "; valor: " & trTaulaResultats["valor"] & Chr(13)

Aquest seria el HelloWorld!  de Gambas2+SQLite.

Cap comentari:

Publica un comentari a l'entrada