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()