lua-users home
lua-l archive

lsqlite3

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Greetings,

I am trying out lsqlite3 for the first time and am new to databases. I understand the sqlite3 statements for the most part, but am have trouble understanding how to extract data using lsqlite3. I see how you can print the values in a database table using db:nrows in a For statement, but what if I want just a single entry?

I have tried a couple of ways to do this, one that works and one that doesn’t. These come from looking through the information found at http://lua.sqlite.org/index.cgi/doc/tip/doc/lsqlite3.wiki

This one works, but doesn’t seem very elegant:

local sqlite3 = require("lsqlite3")

local db = sqlite3.open("POE.db")

function getvalue(udata,cols,values,names)

a = values[1]

return 0

end

db:exec( 'SELECT event_pending FROM devices where url="" getvalue )

print(a)

This one doesn’t:

local sqlite3 = require("lsqlite3")

local db = sqlite3.open("test.db");

db:exec [[

DROP TABLE if exists numbers;

CREATE TABLE numbers(num1,num2,str);

INSERT INTO numbers VALUES(1,11,"ABC");

INSERT INTO numbers VALUES(2,22,"DEF");

INSERT INTO numbers VALUES(3,33,"UVW");

INSERT INTO numbers VALUES(4,44,"XYZ");

]]

local insert_stmt = db:prepare('SELECT * FROM numbers WHERE num1=1')

x = insert_stmt:get_names()

print(x[3])

x = insert_stmt:get_value(0)

print(x[1])

The above works until it gets to the line “x = insert_stmt:get_value(0)”. Lua returns the following:

C:\work>lua test2.lua

str

lua: test2.lua:17: misuse of function

stack traceback:

[C]: in method 'get_value'

test2.lua:17: in main chunk

[C]: in ?

Why doesn’t the second example work?

Should I be doing this another way? I thought I would be able to pull queries into a Lua table, but I don’t see a way to do that.

Thanks,

Rick


AltStyle によって変換されたページ (->オリジナル) /