Examples
Hello World using LuaJava
This example is a simple Hello World application using LuaJava printing both from Lua and 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("Hello World from Java!"); } }
hello.lua
print("Hello World from Lua!")
Accessing a DataBase
This example uses Java JDBC to access a database from Lua.
TestJDBC.java
public class TestJDBC { public static void main(String[] args) throws Exception { // gets a java.sql.Connection and creates a 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() + ")"); } // creates a Lua State and register the basic libraries LuaState L = LuaStateFactory.newLuaState(); L.openLibs(); // registers the statement in the global 'st' L.pushObjectValue(st); L.setGlobal("st"); // execute file testJDBC.lua int err = L.LdoFile("testJDBC.lua"); L.close(); st.close(); con.close(); } }
testJDBC.lua
do -- tests if object Statement is nil if st == nil then print("Error. st object is 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 = i }) return res end end proxy = createSQLProxy("luatest") print(proxy[1].str) print(proxy[1].number)