Dado
Facilidades sobre a LuaSQL
english·português

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

Valid XHTML 1.0!

$Id: examples.html,v 1.4 2013-10-04 22:12:40 tomas Exp $