项目作者: yanming3

项目描述 :
mysql connector的lua版
高级语言: Lua
项目地址: git://github.com/yanming3/lua-mysql-connector.git
创建时间: 2016-10-13T09:43:04Z
项目社区:https://github.com/yanming3/lua-mysql-connector

开源协议:

下载


简介

lua-mysql-connector是一个访问lua语言版本的mysql客户端访问类库,目前还在开发中;

实现特性

  1. 增、删、改、查;
  2. 支持Prepared Statement

待实现特性

  1. 支持TEXT,BLOB数据类型;
  2. 支持存储过程调用;
  3. 支持嵌入式服务器

实现思路

通过luajit的ffi调用mysql官方的c connector实现,因此需要先安装好c connector之后才能运行;通常情况下,mysql c connector类库位于/usr/lib64/mysql/,需要修改环境变量:

  1. LD_LIBRARY_PATH=/usr/lib64/mysql/:$LD_LIBRARY_PATH

export LD_LIBRARY_PATH

代码样例

  1. --[[
  2. CREATE TABLE `test_table` (
  3. `id` int(11) NOT NULL AUTO_INCREMENT,
  4. `c1` varchar(45) DEFAULT NULL,
  5. `c2` char(45) DEFAULT NULL,
  6. `c3` varchar(45) DEFAULT NULL,
  7. `c4` int(11) DEFAULT NULL,
  8. `c7` bigint(12) DEFAULT NULL,
  9. `c8` double DEFAULT NULL,
  10. `c9` float DEFAULT NULL,
  11. `c10` mediumint(24) DEFAULT NULL,
  12. `c11` smallint(5) DEFAULT NULL,
  13. `c12` tinyint(8) DEFAULT NULL,
  14. `t1` datetime DEFAULT NULL,
  15. `t2` date DEFAULT NULL,
  16. `t3` time(6) DEFAULT NULL,
  17. `t4` timestamp(6) NULL DEFAULT NULL,
  18. PRIMARY KEY (`id`)
  19. )
  20. ]]--
  21. package.path="../?.lua;;";
  22. local mysql=require("mysql")
  23. --initialize
  24. local db=mysql:new()
  25. db:connect({host="192.168.200.5", user="test", passwd="test",db="test"})
  26. db:set_character_set("utf8")
  27. --insert data,return id if id is auto incrment
  28. local id=db:insert("insert into test_table(c1,c2,c3,c4,c7,c8,c9,c10,c11,c12,t1,t2,t3,t4) values('test','test','test',12333,1334,4455.94,334.01,33344,32766,127,'2016-10-14 10:24:14','2016-10-14','10:24:14.000000','2016-10-14 10:24:14.000000')")
  29. print(id)
  30. local rows=db:query("select * from test_table")
  31. print(string.format('find %d records', #rows))
  32. print()
  33. for i,record in ipairs(rows) do
  34. print(string.format("%d recrod data is:",i))
  35. for k,v in pairs(record) do
  36. print(k,v)
  37. end
  38. end
  39. db:close()
  1. package.path="../?.lua;;";
  2. local mysql=require("mysql")
  3. local db=mysql:new()
  4. db:connect({host="192.168.200.5", user="test", passwd="test",db="test"})
  5. db:set_character_set("utf8")
  6. db:prepare_stmt("insert into test_table(c1,c2,c3,c4,c7,c8,c9,c10,c11,c12,t1,t2,t3,t4) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)")
  7. db:set_string(0,'测试')
  8. db:set_string(1,'测试')
  9. db:set_string(2,'测试')
  10. db:set_int(3,1111)
  11. db:set_long(4,122223)
  12. db:set_double(5,3344433.03)
  13. db:set_float(6,333.02)
  14. db:set_long(7,333444)
  15. db:set_short(8,333)
  16. db:set_byte(9,23)
  17. db:set_timestamp(10,2016,10,14,10,38,12)
  18. db:set_date(11,2016,10,14)
  19. db:set_time(12,10,38,12)
  20. db:set_timestamp(13,2016,10,14,10,38,12,223)
  21. local num=db:execute_update()
  22. print(string.format("affected data count is %d",num))
  23. db:prepare_stmt("select * from test_table where c1=?")
  24. db:set_string(0,"测试")
  25. local rows=db:execute_query()
  26. print(string.format("found %d records",#rows))
  27. for i,record in ipairs(rows) do
  28. for k,v in pairs(record) do
  29. print(k,v)
  30. end
  31. end
  32. db:close()