gpt4 book ai didi

windows - Luasql 和 SQLite?

转载 作者:IT王子 更新时间:2023-10-29 06:29:37 26 4
gpt4 key购买 nike

我刚开始将 Lua 视为一种访问 SQLite DLL 的简单方法,但在尝试使用与数据库无关的 LuaSQL 模块时遇到错误:

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

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

print("Hello!")

请注意,我试图从最基本的设置开始,因此工作目录中只有以下文件,而 sqlite.dll 实际上是来自 LuaForge 的重命名的 sqlite3.dll。网站:

Directory of C:\Temp<DIR> luasqllua5.1.exelua5.1.dllhello.luaDirectory of C:\Temp\luasqlsqlite.dll

Am I missing some binaries that would explain the error?

Thank you.


Edit: I renamed the DLL to its original sqlite3.dll and updated the source to reflect this (originally renamed it because that's how it was called in a sample I found).

At this point, here's what the code looks like...

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 driver 的完整示例:

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()

谢谢。

最佳答案

  1. 不要重命名DLL文件:这样会导致Lua找不到DLL中的初始化函数(与DLL同名)。

  2. 您不需要module 调用,只需requiremodule 在您创建模块时使用,而不是在您使用它时使用。


编辑:根据 LuaSQL 文档,看起来您需要调用 luasql.sqlite3() 而不是 luasql.sqlite()

关于windows - Luasql 和 SQLite?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2773071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com