Weblog

Arxiu de la categoria ‘Programació’

SQLite, REALbasic i el ROWID

dijous 11 octubre 2007

Bé, doncs resulta que SQLite inclou la possibilitat de generar automaticament un ID autoincrementat, per cada registre d’una taula. Això vol dir que quan definim l’estructura de la taula ens podem estalviar de crear un camp ID amb AUTOINCREMENT, perque SQLite ja ho fa de facto per nosaltres.

REALbasic inclou SQLite com a motor incrustat per bases de dades (a banda de poder treballar amb MySQL, Oracle, …) per tant podem compilar aplicacions amb REALbasic que treballaran comodament amb una base de dades (SQLite) sense necessitat de llibreries ni motors de bases de dades externs. Això és molt pràctic per projectes en que una petita base de dades ja compleix amb les necessitats.

Arribats ha aquest punt si estic treballant amb REALbasic i el Data Source REALSQLdatabase (que utilitza SQLite) i necessito obtenir tots els registres d\’una consulta a una taula, un tipic (per exemple):

SELECT * FROM usuaris

Em retornara un RecordSet (conjunt de registres) amb tots els camps del registre, … EXCEPTE el ROWID que ve definit per defecte.

Si necessito que el RecordSet inclogui un camp amb el ROWID que identifica automaticament a cada registre, em cal fer la consulta aixi:

SELECT *,ROWID FROM usuaris

Es a dir, demanant explicitament que a més a més de TOTS els camps, vull el ROWID.

Això és un aspecte no documentat en la documentació de REALbasic, malgrat que parlen en ocasions del ROWID. I et pot tornar una mica ximple si necessites accedir a un ID unic per cada registre i es clar, no vols definir un camp ID concret perque per això SQLite ja ho fa ell.

En resum, si tenim una taula (per exemple: usuaris) amb els camps:

  • Nom
  • Edat
  • E-mail

I ens cal un RecordSet amb aquests camps i a més el camp ROWID per cada registre, el codi tindra aquest aspecte:

Dim rs As RecordSet
rs = db.SQLSelect("SELECT *,ROWID FROM usuaris")

I fent un recorregut pel RecordSet obtindriem una sortida com la següent (exemple):

Nom Edat E-mail ROWID
Feliu 34 feliu@undomini.com 1
Anna 25 anna@unaltredomini.com 2
Núria 32 nuria@mesdominis.com 3
(…)

A la web de SQLite és parla en detall d’aquest concepte del ROWID


“Quan no estic organitzant pícsels o generant bytes, estic ensenyant com fer-ho.”


Weblog funcionant amb Wordpress

Creative Commons License
Si no s'indica expressament el contrari, el material publicat està subjecte a una llicència de
Reconeixement-No comercial-Compartir amb la mateixa
llicència 2.5 Espanya de Creative Commons

Daniel Ribes 2008