난 그냥 SQLite는 DLL에 액세스 할 수있는 쉬운 방법으로 루아에서 찾기 시작 얻었으나, DB-불가지론 LuaSQL 모듈을 사용하려고 시도하는 동안 오류로 실행 :Luasql 및 SQLite?
require "luasql.sqlite"
module "luasql.sqlite"
print("Content-type: Text/html\n")
print("Hello!")
주 내가하려고 해요 그래서에만 작업 디렉토리에 다음 파일이 가장 기본 설정에서 시작하고, sqlite.dll 실제로 LuaForge 사이트에서 이름을 바꾼 sqlite3.dll을 수 있습니다 :
Directory of C:\Temp <DIR> luasql lua5.1.exe lua5.1.dll hello.lua Directory of C:\Temp\luasql sqlite.dll
것은 내가 설명 할 몇 가지 바이너리 실종 오류?
감사합니다.
편집 : 나는 원래 sqlite3.dll을에 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()이었습니다.
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()
감사합니다 : 나 같은 초보자의 경우
, 여기에 최신 SQLite LuaSQL driver와 완벽한 예입니다.
과 같지 않습니다. DLL의 이름이 변경되는 이유는 무엇입니까? 어떤 오류가 발생하고 있습니까? –
위 예제는 Lua 5.1.4에서 다음과 같은 에러를 보여줍니다 :'lua : sql.lua : 3 : 전역 'luasql'(없음 값)을 인덱스하려고 시도했습니다. 이것은'require '가 더 이상 전역을 정의하지 않기 때문입니다. 첫번째 줄을'luasql = require "luasql.sqlite3"로 변경하면 문제가 해결됩니다. – user1704650