Exemplos
"Olá Mundo" usando LuaJava
Este exemplo é um aplicativo simples "Olá Mundo" que usa o LuaJava para imprimir de Lua e Java.
Hello.java
public class Hello
{
public static void main(String[] args)
{
LuaState L = LuaStateFactory.newLuaState();
L.openLibs();
L.LdoFile("hello.lua");
System.out.println("Olá Mundo de Java!");
}
}
hello.lua
print("Olá Mundo de Lua!")
Acesso a um banco de dados
Este exemplo usa Java JDBC para acessar um banco de dados a partir de Lua.
TestJDBC.java
public class TestJDBC
{
public static void main(String[] args) throws Exception
{
// obtém uma java.sql.Connection e cria um Statement
Class.forName("org.hsqldb.jdbcDriver");
Connection con = DriverManager.getConnection(
"jdbc:hsqldb:hsql://localhost:9002",
"sa", "");
Statement st = con.createStatement();
try
{
st.execute("DROP TABLE luatest");
}
catch (Exception ignore) {}
st.execute([[CREATE TABLE luatest
(id int not null primary key,
str varchar, number double)]]);
for(int i = 0 ; i < 10 ; i++)
{
st.executeUpdate(
"INSERT INTO luatest (id, str, number) values(" +
i + ", '" + 2*i + "', " +
System.currentTimeMillis() + ")");
}
// cria um estado Lua e registra as bibliotecas básicas
LuaState L = LuaStateFactory.newLuaState();
L.openLibs();
// registra a instrução no 'st' global
L.pushObjectValue(st);
L.setGlobal("st");
// executa o arquivo testJDBC.lua
int err = L.LdoFile("testJDBC.lua");
L.close();
st.close();
con.close();
}
}
testJDBC.lua
do
-- testa se o Statement é nil
if st == nil then
print("Erro. Objeto st é nil")
return
end
local st = st
_G.st = nil
function createSQLProxy(t)
local tableName = t
local function i (t,k)
local id = tonumber(k)
if not id then
return nil
end
local function mi (t,k)
local sql = "select "..k.." from "..
tableName.." where id="..id
local rs = st:executeQuery(sql)
if not rs:next() then
rs:close()
return nil
end
local res = rs:getString(1)
rs:close()
return res
end
local res = {}
setmetatable(res, {__index = mi})
return res
end
local res = {}
setmetatable(res, {__index = mi})
return res
end
end
proxy = createSQLProxy("luatest")
print(proxy[1].str)
print(proxy[1].number)
