Mirando utilidades para sqlite, veo que con SQLite2008 Pro[1] indica
lo siguiente:
"SQLite2008 Pro Enterprise Manager is a freeware tool that enables you
to manage your SQLite3 databases. Not only that, you can using this
tool for learning and working with LUA programming language."
Sería ideal poder utilizar esta herramienta para trabajar con lua y
sqlite, pero no encuentro cómo. No hay más documentación que las
propias de sqlite3 y lua. ¿Sabe álguien cómo se podría ejecutar
scripts de lua desde esta herramienta?
2008/5/6 Chema Cortes <pyc...@gmail.com>:
--
Jose L. Hidalgo Valiño (PpluX)
---- http://www.pplux.com ----
Hi,
Thank you for downloading SQlite2008Pro.
Here is the sample to use lua script.
Please try to write like this in sqlite query editor:
print(_VERSION)
after that, please press F9 key.
now working with sqlite3 database, but firstly please make sure you have
a connection with any sqlite3 database. lua script:
sqlite3.exec('create table a(a,b,c)')
for i=1,100 do
sqlite3.exec('insert into a values(1,2,3')
end
press F9 key and then refresh database schema.
Regards,
osen
He estado experimentando un poco. Hay algunas cosas que funcionan de
modo distinto como la función print sólo admite un argumento o que no
se pueden usar comillas dobles. Supongo que no está todavía preparado
para programaciór general de scripts, sobre todo por lo frecuente que
se inestabiliza al ir ejecutando scripts. Aún así he hecho alguna
cosa, que os añado a continuación por si le sirve de ejemplo a
álguien. Consigo "preparar" una query y creo una función de usuario.
La versión de lua-sqlite es la versión devel-0.6, bastante diferente a
la que podáis estar acostumbrados:
--función para mostrar una fila
local showrow=function(udata,cols,data,names)
print('>> '..table.concat(data,' ',1,cols))
return 0
end
local db=sqlite3.db()
db:execute[[
create table prueba(a number,b number,c number);
]]
local stmt=db:prepare 'insert into prueba values(:id,:id +1,:id -1)'
for i=0,100 do
stmt:bind_names{id=i}
stmt:step()
stmt:reset()
end
stmt:finalize()
--Imprimir los resultados
db:execute('select * from prueba',showrow)
--Creación de una función de usuario
local sumax=function(ctx,a) ctx:result(a+10) end
db:create_function('sumax',1,sumax)
db:execute('select a,sumax(a) from prueba',showrow)
Para ejecutarlo, basta abrir una base de datos en SQLite2008Pro, pegar
el código en una ventana de SQL y pulsar F9.