A Lua programozási nyelv

Példaprogramok

Adatbziskezels

LuaSQL:

Egy SQL adatbzisok kezelsre szolgl knyvtr. A Java JDBC-hez hasonlan minden adatbzis szolgltatshoz kln van implementlva driver, de mindegyik kveti ugyanazokat a smkat, br lehetnek klnbsgek. A knyvtr az albbi tpusokat, szolgltatsokat nyjtja:

Environment tpus:

Az adatbzis szolgltatssal val kapcsolatot kezeli, a driverek betltst, adatbzisok megnyitst lehet segtsgvel vgezni.

luasql.[adatbzisdriver]

Ltrehoz egy adott adatbzisszolgltats krnyezet objektumt, s visszadja.

env:connect

Rcsatlakozik egy adott adatbzisra. Paramterben az adatbzis nevt, s opcionlisan egy felhasznlnevet s jelszt kr, s visszaadja az adatbzis kapcsolat objektumot, ha sikeres a kapcsolds.

env:close

Bezrja a krnyezetet.

Kapcsolat tpus:

Egy adott adatbzissal val kapcsolatot kezel objektum. Ezzel lehet magn az adatbzison dolgozni, lekrdezni, hozzadni stb.

conn:close

Bezrja a kapcsolatot.

conn:commit

Elmenti a vltozsokat.

True vagy false rtket ad vissza, attl fggen, hogy sikeres volt-e a ments.

conn:rollback

Visszavonja a vltozsokat.

True vagy false rtket ad vissza, attl fggen, hogy sikeres volt-e a mvelet.

conn:execute

Vgrehajt egy SQL kifejezst. Ha az egy lekrdezs, akkor visszad egy kurzort az eredmnyvel, egybknt a parancs ltal megvltoztatott sorok szmt.

conn:setautocommit

Belltja, hogy automatikusan mentse-e a vltozsokat.

Kurzor tpus:

Segtsgvel elrhetjk egy vgrehajtott lekrdezs eredmnyt.

cur:close

Bezrja a kurzort.

cur:getcolname

Visszaadja az oszlopok neveit tmbben.

cur:getcoltypes

Visszaadja az oszlopok tpusait tmbben.

cur:fetch

Visszaadja a kvetkez sort. Paramter nlkl meghvva egyszeren visszatrsi rtkknt kapjuk vissza, de meg lehet adni egy tblt is paramternek, akkor abba menti el az adatokat, majd visszadja a megvltozott tblt. Ha ez a paramter meg van adva, akkor mg lehet egy modestring-et is megadni, ami meghatrozza a tbla formtumt. n esetn egyszern numerikus indexels van, a esetn viszont szveggel indexeli. Az oszlopok rtkeinek tpusai a konkrt implementcitl fggenek, valamelyikek Lua tpusra konvertljk, valamelyikek mindet string-knt adjk vissza.

Hibakezels:

A hiba fajtjtl fggen ktfle mdon viselkedik a knyvtr. Ha az adatbzissal kapcsolatos kivtel trtnik, pldul hibs SQL lekrdezs, rossz felhasznlnv+jelsz, akkor a meghvott fggvny nil rtket, s a hibazenetet adja vissza. A Lua oldaln trtnt hibknl, pldul nem ltez objektum, rossz paramterezs, stb. esetn hibt dob.

Plda:

require"luasql.postgres"

env = assert(luasql.postgres())

conn = assert(env:connect("Example", "postgres", "abcd"))

changedrows = conn:execute("insert into people values ('Pisti', 'Male', '1990-05-04')")

query = conn:execute("select name from people")

row = query:fetch()

while row do

print(row)

row = query:fetch()

end

query:close()

conn:close()

env:close()