lua简单操作sqlite3
luasql模块支持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对象(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |