# Lua 數據庫訪問
本文主要為大家介紹 Lua 數據庫的操作庫:[LuaSQL](http://luaforge.net/projects/luasql/)。他是開源的,支持的數據庫有:ODBC, ADO, Oracle, MySQL, SQLite 和 PostgreSQL。
本文為大家介紹MySQL的數據庫連接。
LuaSQL 可以使用 [LuaRocks](https://luarocks.org/) 來安裝可以根據需要安裝你需要的數據庫驅動。
LuaRocks 安裝方法:
```
$ wget http://luarocks.org/releases/luarocks-2.2.1.tar.gz
$ tar zxpf luarocks-2.2.1.tar.gz
$ cd luarocks-2.2.1
$ ./configure; sudo make bootstrap
$ sudo luarocks install luasocket
$ lua
Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio
> require "socket"
```
Window 下安裝 LuaRocks:[https://github.com/keplerproject/luarocks/wiki/Installation-instructions-for-Windows](https://github.com/keplerproject/luarocks/wiki/Installation-instructions-for-Windows)
安裝不同數據庫驅動:
```
luarocks install luasql-sqlite3
luarocks install luasql-postgres
luarocks install luasql-mysql
luarocks install luasql-sqlite
luarocks install luasql-odbc
```
你也可以使用源碼安裝方式,Lua Github 源碼地址:[https://github.com/keplerproject/luasql](https://github.com/keplerproject/luasql)
Lua 連接MySql 數據庫:
```
require "luasql.mysql"
--創建環境對象
env = luasql.mysql()
--連接數據庫
conn = env:connect("數據庫名","用戶名","密碼","IP地址",端口)
--設置數據庫的編碼格式
conn:execute"SET NAMES UTF8"
--執行數據庫操作
cur = conn:execute("select * from role")
row = cur:fetch({},"a")
--文件對象的創建
file = io.open("role.txt","w+");
while row do
var = string.format("%d %s\n", row.id, row.name)
print(var)
file:write(var)
row = cur:fetch(row,"a")
end
file:close() --關閉文件對象
conn:close() --關閉數據庫連接
env:close() --關閉數據庫環境
```
</stdin:1></stdin:1></p這里注意對返回值的邏輯判斷:<>
- Lua 簡介
- Lua 環境安裝
- Lua 數據類型
- Lua 變量
- Lua 循環
- Lua while 循環
- Lua for 循環
- Lua repeat...until 循環
- Lua 循環嵌套
- Lua break 語句
- Lua 流程控制
- Lua if 語句
- Lua if...else 語句
- Lua if 嵌套語句
- Lua 函數
- Lua 運算符
- Lua 字符串
- Lua 數組
- Lua 迭代器
- Lua table(表)
- Lua 模塊與包
- Lua 元表(Metatable)
- Lua 協同程序(coroutine)
- Lua 文件 I/O
- Lua 錯誤處理
- Lua 調試(Debug)
- Lua 垃圾回收
- Lua 面向對象
- Lua 數據庫訪問