DB库
DB库是cf框架封装自MySQL 4.0协议实现的客户端连接库, 提供MySQL断线重连、SQL重试、连接池等特性.
API介绍
在使用下面的API之前, 请先确保已经导入库: local DB = require "DB"
.
DB:new(opt)
opt参数是一个lua table. 请根据实际情况传入如下字段:
host - '你的mysql主机名或ip地址'
port - 3306, mysql主机端口
user - '用于连接mysql的用户'
password - '用于连接mysql的密码'
database - 'use db', 可选(optional)
charset - 'utf8', 可选(optional)
- local DB = require "DB"
- local db = DB:new({
- host = 'localhost',
- port = 3306;
- username = 'root',
- username = 'password',
- database = 'mysql',
- charset = 'utf8mb4', -- 默认为utf8, 请确保此致与table encoding一致, 否则可能会出现插入乱码的情况.
- max = 100, -- 不建议超过这个数
- })
此方法的返回值为一个db对象.
db:connect()
开始连接MySQL. 连接成功返回True, 否则将会持续进行连接并且输出连接失败原因的日志.
- local ok = db:connect()
- if not ok then
- return print("DB连接失败")
- end
- print("DB连接成功")
db:query(SQL)
DB初始化完成后即可使用, 否则会提示使用者先初始化.
MySQL查询语句调用方法, SQL为string类型的的一个标准SQL语句.
db:query的参数SQL是一个字符串类型, 内部为原始SQL语句字符串且支持多行表示法, 如:
- db:query([[
- SELECT
- XXX,
- XXX,
- XXX,
- FROM mysql.user
- WHERE
- 1 = 1
- ORDER BY id, name DESC
- LIMIT 0, 100
- ]])
使用示例:
- local ret, err = db:query("show variables like 'wait_timeout'")
返回值为ret与err. 查询成功ret为一个结果集数组, 在发生错误时未nil, err为错误信息.
其它
DB库由class库创建而来. DB库仅作为数据库操作语句;
DB库满足大部分日常SQL查询与联合查询相关使用;
DB库的具体使用方法, 请参考scrit/test_DB.lua
示例;
DB库的charset编码表支持字段如下, 连接使用的charset属性请填写如下Key :
- local map = {
- _default = 0,
- big5 = 1,
- dec8 = 3,
- cp850 = 4,
- hp8 = 6,
- koi8r = 7,
- latin1 = 8,
- latin2 = 9,
- swe7 = 10,
- ascii = 11,
- ujis = 12,
- sjis = 13,
- hebrew = 16,
- tis620 = 18,
- euckr = 19,
- koi8u = 22,
- gb2312 = 24,
- greek = 25,
- cp1250 = 26,
- gbk = 28,
- latin5 = 30,
- armscii8 = 32,
- utf8 = 33,
- ucs2 = 35,
- cp866 = 36,
- keybcs2 = 37,
- macce = 38,
- macroman = 39,
- cp852 = 40,
- latin7 = 41,
- utf8mb4 = 45,
- cp1251 = 51,
- utf16 = 54,
- utf16le = 56,
- cp1256 = 57,
- cp1257 = 59,
- utf32 = 60,
- binary = 63,
- geostd8 = 92,
- cp932 = 95,
- eucjpms = 97,
- gb18030 = 248
- }
注意
- MySQL8.0以上版本使用新版加密方式导致连接失败, 请手动更改为:
mysql_native_password
.