# 18 Lua 与MYSQL
#
本文主要为大家介绍 Lua 数据库的操作库:
[LuaSQL](http://luaforge.net/projects/luasql/) [http://luaforge.net/projects/luasql/](http://luaforge.net/projects/luasql/)
他是开源的,支持的数据库有:ODBC, ADO, Oracle, MySQL, SQLite 和 PostgreSQL。
LuaSQL 可以使用
[LuaRocks](https://luarocks.org/) [https://luarocks.org/](https://luarocks.org/)
来安装可以根据需要安装你需要的数据库驱动。
## LuaRocks 安装方法:
```lua
$ wget https://luarocks.org/releases/luarocks-2.4.1.tar.gz
$ tar zxpf luarocks-2.4.1.tar.gz
$ cd luarocks-2.4.1
$ ./configure; sudo make bootstrap
$ sudo luarocks install luasocket
$ lua
Lua 5.3.3 Copyright (C) 1994-2016 Lua.org, PUC-Rio
> require "socket"
```
### 通过LuaRocks安装mysql必要的驱动:
```lua
sudo luarocks install luasql-mysql MYSQL_INCDIR=/usr/include/mysql/
```
```lua
mysql = require "luasql.mysql"
--创建环境对象
local env = mysql.mysql()
--链接数据库
local conn = env:connect("dstorage", "root", "itcast")
print(env, conn)
print("----------")
--执行sql语句
cursor,errorString = conn:execute([[ select * from user]])
--遍历查询结果
row = cursor:fetch({}, "a")
while row do
print(string.format("Id:%s Name:%s", row.u_id, row.u_name))
row = cursor:fetch({}, "a")
end
--关闭链接句柄
conn:close()
env:close()
```
执行结果:
```lua
MySQL environment (0x16fb628) MySQL connection (0x16fc108)
----------
Id:1 Name:ace
Id:2 Name:shit
Id:3 Name:gailun
Id:4 Name:ben
Id:5 Name:akali
Id:6 Name:marong
Id:7 Name:123
Id:9 Name:songjj
Id:10 Name:a
Id:12 Name:guanyuhan
Id:14 Name:tt-y
Id:16 Name:1234
Id:17 Name:1111
Id:18 Name:mike
Id:19 Name:pipixia
Id:21 Name:qqq
Id:22 Name:123123
Id:23 Name:1110
Id:25 Name:he
```
- 1 Lua介绍及环境
- 2 基本语法
- 3 数据类型
- 4 Lua 变量
- 5 循环
- 6 流程控制
- 7 函数
- 8 运算符
- 9 字符串
- 10 数组
- 11 迭代器
- 12 table
- 13 Lua 模块与包
- 14 Lua 元表(Metatable)
- 14.1 元表案例
- 15 Lua 协同程序(coroutine)
- 16 Lua 文件IO
- 17 Lua 面向对象
- 17.1 类
- 17.2 继承
- 17.3 封装
- 18 Lua 与 Mysql
- 19 Lua 与 redis
- 20 Lua 与 JSON
- 21 Lua 与 http
- 22 Lua 与 Nginx
- 22.1 Nginx_Lua的安装及环境
- 22.2 ngx_lua API(全表)
- 22.3 常用命令介绍
- 22 Lua 人工智能
- (1) Torch的安装
- (2)Tensor
- Lua与C混合编程