Exemplos
O exemplo abaixo mostra o uso básico do pacote.
local dado = require"dado" db = dado.connect ("dbname", "username") db.conn:execute ("drop table mytable") -- uso direto da LuaSQL, para que o comando possa falhar sem interromper a execução. db:assertexec [[ create table mytable ( key integer, field1 varchar(10), field2 varchar(10), adate date )]] data = { { field1 = "val1", field2 = "val21", }, { field1 = "val2", field2 = "val22", }, { field1 = "val3", field2 = "val32", }, } -- Insert for index, record in ipairs(data) do record.key = index db:insert ("mytable", record) end -- Update local r = data[2] r.field1 = "field2" db:update ("mytable", r, "key = "..r.key) -- Recuperando linhas uma por uma for field1, field2 in db:select ("field1, field2", "mytable", "key >= 1", "order by key") do print(field1, field2) end -- Recuperando o resultado todo de uma vez rows = db:selectall ("field1, field2", "mytable", "key >=1", "order by key") for i = 1, #rows do print (data[i].field1, rows[i].field1) print (data[i].field2, rows[i].field2) end -- Delete for i = 1, #data do db:delete ("mytable", data[i].key) end
O exemplo seguinte mostra como usar uma conexão já aberta.
env = luasql.postgres() conn = env:connect ("dbname", "username") new_db = dado.wrap_connection (conn) -- use new_db como uma conexão Dado como outra qualquer
O módulo dado.sql pode facilitar/encurtar a escrita de certas construções.
dado = require"dado" sql = require"dado.sql" db = dado.connect ("dbname", "username") cond = sql.AND { field1 = "val1", field2 = sql.subselect ("field2", "mytable", "key = 1"), } for field1, field2 in db:select ("field1, field2", "mytable", cond)() do print (field1, field2) end