Exemplos
Abaixo, você verá um pequeno exemplo do código do uso básico da biblioteca. Em seguida, outro exemplo mostra como criar um iterador sobre o resultado de uma determinada consulta.
Uso básico
-- carregar o driver require "luasql.postgres" -- criar o objeto de ambiente env = assert (luasql.postgres()) -- conectar a base de dados con = assert (env:connect("luasql-test")) -- retornar a tabela res = con:execute"DROP TABLE people" res = assert (con:execute[[ CREATE TABLE people ( name varchar(50), email varchar(50) ) ]]) -- adiciona alguns elementos list = { { name="José das Couves", email="jose@couves.com", }, { name="Manoel Joaquim", email="manoel.joaquim@cafundo.com", }, { name="Maria das Dores", email="maria@dores.com", }, } for i, p in pairs (list) do res = assert (con:execute(string.format([[ INSERT INTO people VALUES ('%s', '%s')]], p.name, p.email) )) end -- obtem um cursor cur = assert (con:execute"SELECT name, email from people") -- imprime todos os registros, indexados pelos nomes de campos row = cur:fetch ({}, "a") while row do print(string.format("Nome: %s, E-mail: %s", row.name, row.email)) -- reutiliza a tabela de resultados row = cur:fetch (row, "a") end -- fecha tudo cur:close() con:close() env:close()
O resultado desse script será:
Nome: José das Couves, E-mail: jose@couves.com Nome: Manoel Joaquim, E-mail: manoel.joaquim@cafundo.com Nome: Maria das Dores, E-mail: maria@dores.com
Uso do iterador
Pode ser útil oferecer um iterador para cada registro do resultado:
function rows (connection, sql_statement) local cursor = assert (connection:execute (sql_statement)) return function () return cursor:fetch() end end
Esse iterador é usado da seguinte forma:
require "luasql.mysql" env = assert (luasql.mysql()) con = assert (env:connect"my_db") for id, name, address in rows (con, "select * from contacts") do print (string.format ("%s: %s", name, address)) end
A implementação acima utiliza a coleta de lixo de Lua para fechar o cursor. Ela pode ser melhorada de modo a apresentar mensagens de erro mais adequadas (incluindo o statement SQL por exemplo) ou para fechar explicitamente o cursor (verificando se ainda existem mais linhas).