简单的Lua 连接操作mysql数据库的方法

时间:2022-11-24 21:40:36

win 需要先安装luaforwindows
linux 需要安装 luarocks 并 luarocks install luasql-mysql

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
require"luasql.mysql"
 
--创建环境对象
env=luasql.mysql()
 
--连接数据库
conn=env:connect("数据库名","用户名","密码","IP地址",端口)
 
--设置数据库的编码格式
conn:execute"SET NAMES GB2312"
 
--执行数据库操作
cur=conn:execute("select * from role")
 
row=cur:fetch({},"a")
 
while row do
var=string.format("%d%s\n",row.id,row.name)
 
print(var)
 
row=cur:fetch(row,"a")
end
 
conn:close()--关闭数据库连接
env:close()--关闭数据库环境

上面是个简单的,我们再来看个稍微复杂些的例子

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
-- load driver
require "luasql.mysql"
-- create environment object
env = assert (luasql.mysql())
-- connect to data source
con = assert (env:connect("database", "usr", "password", "192.168.xx.xxx", 3306))
-- reset our table
res = con:execute"DROP TABLE people"        --建立新表people
res = assert (con:execute[[
CREATE TABLE people(       
  name varchar(50),
  email varchar(50)
)
]])
-- add a few elements
list = {
{ name="Jose das Couves", email="jose@couves.com", },
{ name="Manoel Joaquim", email="manoel.joaquim@cafundo.com", },
{ name="Maria das Dores", email="maria@dores.com", },
}
for i, p in pairs (list) do                      --加入数据到people表
res = assert (con:execute(string.format([[
  INSERT INTO people                     
  VALUES ('%s', '%s')]], p.name, p.email)
))
end
-- retrieve a cursor
cur = assert (con:execute"SELECT name, email from people")  --获取数据
-- print all rows
row = cur:fetch ({}, "a") -- the rows will be indexed by field names  --显示出来
while row do
print(string.format("Name: %s, E-mail: %s", row.name, row.email))
row = cur:fetch (row, "a") -- reusing the table of results
end
-- close everything
cur:close()
con:close()
env:close()