# 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混合編程