简单的Lua 连接操作mysql数据库的方法
win需要先安装luaforwindows
linux需要安装luarocks并luarocksinstallluasql-mysql
require"luasql.mysql"
--创建环境对象
env=luasql.mysql()
--连接数据库
conn=env:connect("数据库名","用户名","密码","IP地址",端口)
--设置数据库的编码格式
conn:execute"SETNAMESGB2312"
--执行数据库操作
cur=conn:execute("select*fromrole")
row=cur:fetch({},"a")
whilerowdo
var=string.format("%d%s\n",row.id,row.name)
print(var)
row=cur:fetch(row,"a")
end
conn:close()--关闭数据库连接
env:close()--关闭数据库环境
上面是个简单的,我们再来看个稍微复杂些的例子
--loaddriver
require"luasql.mysql"
--createenvironmentobject
env=assert(luasql.mysql())
--connecttodatasource
con=assert(env:connect("database","usr","password","192.168.xx.xxx",3306))
--resetourtable
res=con:execute"DROPTABLEpeople"--建立新表people
res=assert(con:execute[[
CREATETABLEpeople(
namevarchar(50),
emailvarchar(50)
)
]])
--addafewelements
list={
{name="JosedasCouves",email="jose@couves.com",},
{name="ManoelJoaquim",email="manoel.joaquim@cafundo.com",},
{name="MariadasDores",email="maria@dores.com",},
}
fori,pinpairs(list)do--加入数据到people表
res=assert(con:execute(string.format([[
INSERTINTOpeople
VALUES('%s','%s')]],p.name,p.email)
))
end
--retrieveacursor
cur=assert(con:execute"SELECTname,emailfrompeople")--获取数据
--printallrows
row=cur:fetch({},"a")--therowswillbeindexedbyfieldnames--显示出来
whilerowdo
print(string.format("Name:%s,E-mail:%s",row.name,row.email))
row=cur:fetch(row,"a")--reusingthetableofresults
end
--closeeverything
cur:close()
con:close()
env:close()