lua簡單操作sqlite3luasql模塊支持sqlite3,可以完成最基本的數據庫功能,不過官方文檔上寫得不是很詳細。掃了下源代碼,外加實驗了下,得出了點經驗。 環境Windows XP,LuaForWindows 代碼require"luasql.sqlite3" function enumSimpleTable(t) print"-------------------" fork,v in pairs(t) do print(k, " = ", v) end print"-------------------\n" end function rows(cur) returnfunction(cur) localt = {} if(nil~= cur:fetch(t, 'a')) then return t elsereturn nil end end,cur end env = assert(luasql.sqlite3()) db =assert(env:connect("test.db")) db:setautocommit(false) res = assert(db:execute [[CREATE TABLEpeople(name text, sex text)]]) res = assert(db:execute [[INSERT INTOpeople VALUES('程序猿','男')]]) res = assert(db:execute [[INSERT INTOpeople VALUES('程序猿老婆', '女')]]) assert(db:commit()) res = assert(db:execute [[SELECT * FROMpeople]]) colnames = res:getcolnames() coltypes = res:getcoltypes() enumSimpleTable(colnames) enumSimpleTable(coltypes) for r in rows(res) do enumSimpleTable(r) end res:close() db:close() env:close() 結論environment對象(數據庫驅動)構造env = luasql.sqlite3() 成員close() 關閉環境。請先關閉所有connection對象。 connection對象(數據庫連接)構造con = env:connect(sqlite3_database_file_path)
成員res = execute(sql_statement) 執行sql語句
setautocommit(bAuto)
commit() 提交事務 rollback() 回滾事務 close() 關閉數據庫連接,請先關閉所有的cursor對象 rowed = getlastautoid() 獲取最近一次自動生成的sqlite的rowid字段值(對應sqlite3_last_insert_rowid()) cursor對象構造con:execute(select_sql_statement) 成員colnametable = getcolnames() 以table形式返回記錄集中每一列的列名 coltypetable = getcoltypes() 以table形式返回記錄集中每一列的類型 res = fetch([table[,modestring]]) 獲取下一個記錄集
close() 關閉cursor對象
------------------------------------------------------------
本文由WindTaiL在cnblogs中發布,轉載請注明出處 分類: lua |
|