1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt">
<head>
<title>LuaSQL: Conectividade de banco de dados para a linguagem de programação Lua</title>
<link rel="stylesheet" href="doc.css" type="text/css"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<div id="container">
<div id="product">
<div id="product_logo"><a href="http://www.keplerproject.org">
<img alt="LuaSQL logo" src="luasql.png"/>
</a></div>
<div id="product_name"><big><strong>LuaSQL</strong></big></div>
<div id="product_description">Conectividade de banco de dados para a linguagem de programação Lua</div>
</div> <!-- id="product" -->
<div id="main">
<div id="navigation">
<h1>LuaSQL</h1>
<ul>
<li><a href="index.html">Home</a>
</li>
<li><a href="manual.html">Manual</a>
</li>
<li><strong>Exemplos</strong></li>
<li><a href="history.html">Histórico</a></li>
<li><a href="https://github.com/lunarmodules/luasql">Projeto</a>
<ul>
<li><a href="https://github.com/lunarmodules/luasql/issues">Bug Tracker</a></li>
</ul>
</li>
<li><a href="license.html">Licença</a></li>
</ul>
</div> <!-- id="navigation" -->
<div id="content">
<h2><a name="examples"></a>Exemplos</h2>
<p>Abaixo, você verá um pequeno exemplo do código do uso básico da biblioteca.
Em seguida, outro exemplo mostra como criar um
<a href="#iterator_example">iterador</a> sobre o resultado de uma determinada consulta.</p>
<h3><a name="basic_use"></a>Uso básico</h3>
<pre class="example">
-- 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()
</pre>
<p>O resultado desse script será:</p>
<pre class="example">
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
</pre>
<h3><a name="iterator_example"></a>Uso do iterador</h3>
<p>Pode ser útil oferecer um iterador para cada registro do resultado:</p>
<pre class="example">
function rows (connection, sql_statement)
local cursor = assert (connection:execute (sql_statement))
return function ()
return cursor:fetch()
end
end
</pre>
<p>Esse iterador é usado da seguinte forma:</p>
<pre class="example">
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
</pre>
<p>Obviamente, o código acima só funciona se houver uma tabela chamadas <code>contacts</code> com as colunas apropriadas.
No final do <i>loop</i> o objeto cursor será automaticamente fechado pelo driver, já que todo o resultado foi recuperado.</p>
<h3><a name="To_be_closed"></a>Objetos <i>to-be-closed</i></h3>
<p>
<strong style="color: red;">Nota de Compatibilidade:</strong>
Variáveis <i>To-be-closed</i> é um recurso introduzido na versão 5.4 de Lua. Portanto, essa funcionalidade só pode ser usada se o driver LuaSQL (versão > 2.6) for compilado para a versão 5.4 ou superior de Lua.
</p>
<pre class="example">
function getName(db, id)
-- Este código requer Lua 5.4 ou superior devido ao uso de variáveis to-be-closed
local cur <close> = db:execute("SELECT name FROM contacts WHERE id = " .. id)
return cur:fetch()
end
</pre>
</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<p><a href="http://validator.w3.org/check?uri=referer">Valid XHTML 1.0!</a></p>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>
|