SQLite DLL にアクセスする簡単な方法として Lua を検討し始めたところですが、DB に依存しない LuaSQL モジュールを使用しようとしたときにエラーが発生しました。
require "luasql.sqlite"
module "luasql.sqlite"
print("Content-type: Text/html\n")
print("Hello!")
最も基本的なセットアップから始めようとしていることに注意してください。したがって、作業ディレクトリには次のファイルのみがあり、sqlite.dll は実際にはLuaForgeサイトの名前が変更された sqlite3.dll です。
C:\Temp のディレクトリ <DIR> luasql lua5.1.exe lua5.1.dll こんにちは.lua 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.sqlite()の代わりにenv = luasql.sqlite3()。
私のような初心者のために、最新の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()
ありがとうございました。