lua mysql_Lua MySQL操作

对于简单的数据操作,可使用文件处理。但有时,这些文件操作可能效率不高,可扩展且功能强大。 为此经常需要使用数据库。 LuaSQL是一个从Lua到许多数据库管理系统的简单接口。 LuaSQL是一个库,它为不同类型的SQL提供支持。 包括 -

SQLite

Mysql

ODBC

在本教程中,将介绍在Lua中如何使用MySQL和SQLite数据库操作处理。它为两者使用通用接口,并且也可以将此实现移植到其他类型的数据库。 首先来看看如何在MySQL中进行操作。

MySQL数据库安装设置

要使以下示例按预期工作,需要初始数据库安装设置。 假设如下 -

安装并设置MySQL使用默认用户:root,密码为:123456。

创建数据库:test。

可通过学习MySQL教程来了解MySQL基础知识。

导入MySQL

假设Lua实现正确完成,使用一个简单的require语句来导入sqlite库。

mysql = require "luasql.mysql"

变量mysql将通过引用主mysql表来提供对函数的访问。

设置连接

通过启动MySQL环境,然后为环境创建连接。 如下所示 -

local env = mysql.mysql()

local conn = env:connect('test','root','123456')

上述连接将连接到现有的MySQL文件,并与新创建的文件建立连接。

执行函数

连接提供了一个简单的执行函数,可以帮助我们执行创建,插入,删除,更新等操作完成所有数据库操作。 语法如下所示 -

conn:execute([[ 'MySQLSTATEMENT' ]])

在上面的语法中,需要确保conn是打开的,以及MySQL连接成功,并用正确的SQL语句替换'MySQLSTATEMENT'。

创建表示例

下面显示了一个简单的create table示例。 它创建一个表,其中包含两个字段参数: id类型为integer,name类型为varchar。

mysql = require "luasql.mysql"

local env = mysql.mysql()

local conn = env:connect('test','root','123456')

print(env,conn)

status,errorString = conn:execute([[CREATE TABLE sample2 (id INTEGER, name TEXT);]])

print(status,errorString )

运行上述程序时,将创建一个名为sample的表,其中包含两列,即id和name。

MySQL environment (004BB178) MySQL connection (004BE3C8)

0 nil

如果语句有任何错误,将返回错误语句而不是nil。 一个简单的错误声明如下所示 -

LuaSQL: Error executing query. MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"id INTEGER, name TEXT)' at line 1

插入语句示例

MySQL的insert语句如下所示-

conn:execute([[INSERT INTO sample values('11','Maxsu')]])

更新语句示例

MySQL的更新语句如下所示 -

conn:execute([[UPDATE sample3 SET name='Yiibai' where id ='12']])

删除语句示例

MySQL的删除语句如下所示 -

conn:execute([[DELETE from sample3 where id ='12']])

选择语句示例

就select语句而言,我们需要循环遍历每一行并提取所需的数据。一个简单的选择语句如下所示 -

cursor,errorString = conn:execute([[select * from sample]])

row = cursor:fetch ({}, "a")

while row do

print(string.format("Id: %s, Name: %s", row.id, row.name))

-- reusing the table of results

row = cursor:fetch (row, "a")

end

在上面的代码中,conn是一个打开的MySQL连接。 在execute语句返回的游标的帮助下,可以遍历表响应并获取所需的选择数据。

一个完整的例子

下面给出了包括所有上述语句的完整示例 -

mysql = require "luasql.mysql"

local env = mysql.mysql()

local conn = env:connect('test','root','123456')

print(env,conn)

status,errorString = conn:execute([[CREATE TABLE sample3 (id INTEGER, name TEXT)]])

print(status,errorString )

status,errorString = conn:execute([[INSERT INTO sample3 values('12','Maxsu')]])

print(status,errorString )

cursor,errorString = conn:execute([[select * from sample3]])

print(cursor,errorString)

row = cursor:fetch ({}, "a")

while row do

print(string.format("Id: %s, Name: %s", row.id, row.name))

row = cursor:fetch (row, "a")

end

-- close everything

cursor:close()

conn:close()

env:close()

运行上述程序时,将获得以下输出 -

MySQL environment (0037B178) MySQL connection (0037EBA8)

0 nil

1 nil

MySQL cursor (003778A8) nil

Id: 12, Name: Maxsu

执行事务

事务是一种确保数据一致性的机制。事务具有以下四个属性 -

原子性 - 事务完成或根本没有任何事情发生。

一致性 - 事务必须以一致状态启动,并使系统保持一致状态。

隔离性 - 在当前事务之外不可见事务的中间结果。

持久性 - 提交事务后,即使系统出现故障,影响也会持续存在。

事务以START TRANSACTION开始; 并以commit或rollback语句结束。

开始事务

要启动事务,需要在Lua中执行以下语句,假设conn是一个打开的MySQL连接。

conn:execute([[START TRANSACTION;]])

回滚事务

需要执行以下语句来回滚执行启动事务后所做的更改。

conn:execute([[ROLLBACK;]])

提交事务

需要执行以下语句来提交启动事务执行后所做的更改。

conn:execute([[COMMIT;]])

在上面和后面的章节中已经了解了MySQL的基本SQL操作。 记住事务,虽然这里没有为SQLite3解释,但同样的语句也适用于SQLite3。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值