当前位置:  开发笔记 > 编程语言 > 正文

Luasql和SQLite?

如何解决《Luasql和SQLite?》经验,为你挑选了0个好方法。

我刚开始将Lua看作是访问SQLite DLL的简单方法,但在尝试使用与DB无关的LuaSQL模块时遇到了错误:

require "luasql.sqlite"
module "luasql.sqlite"

print("Content-type: Text/html\n")

print("Hello!")

请注意,我正在尝试从最基本的设置开始,因此只在工作目录中包含以下文件,而sqlite.dll实际上是从LuaForge站点重命名的sqlite3.dll :

Directory of C:\Temp
 luasql
lua5.1.exe
lua5.1.dll
hello.lua

Directory of C:\Temp\luasql
sqlite.dll

我错过了一些可以解释错误的二进制文件吗?

谢谢.


编辑:我将DLL重命名为其原始sqlite3.dll并更新源以反映这一点(最初重命名它,因为它是在我找到的样本中调用它的方式).

在这一点上,这是代码的样子......

require "luasql.sqlite3"

-- attempt to call field 'sqlite' (a nil value)
env = luasql.sqlite()

env:close()

...以及我收到的错误消息:

C:\>lua5.1.exe hello.lua
lua5.1.exe: hello.lua:4: attempt to call field 'sqlite' (a nil value)

编辑:发现它是什么:env = luasql.sqlite3()而不是env = luasql.sqlite().

对于像我这样的新手,这里是最新的SQLite LuaSQL驱动程序的完整示例:

require "luasql.sqlite3"

env = luasql.sqlite3()
conn = env:connect("test.sqlite")

assert(conn:execute("create table if not exists tbl1(one varchar(10), two smallint)"))
assert(conn:execute("insert into tbl1 values('hello!',10)"))
assert(conn:execute("insert into tbl1 values('goodbye',20)"))

cursor = assert(conn:execute("select * from tbl1"))
row = {}
while cursor:fetch(row) do
    print(table.concat(row, '|'))
end

cursor:close()
conn:close()

env:close()

谢谢.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有