如何在Lua编程中使用MySQL?
Lua 提供了不同的库,可以用来操作 MySQL。最流行的用于在 Lua 中操作 MySQL 的框架是 **LuaSQL**。
LuaSQL 是一个从 Lua 到 DBMS 的简单接口。它使 Lua 程序能够:
- 连接到 **ODBC、ADO、Oracle、MySQL、SQLite、Firebird** 和 **PostgreSQL** 数据库;
- 执行任意 SQL 语句;
- 以逐行游标的方式检索结果。
你可以使用以下命令下载 MySQL:
luarocks install luasql-mysql
MySQL 数据库设置
为了使下面的例子按预期工作,我们需要进行初始数据库设置。假设条件如下:
- 你已经安装并设置了 MySQL,默认用户为 root,密码为 **'123456'**。
- 你已经创建了一个名为 **test** 的数据库。
导入 MySQL
假设你的 Lua 实现正确,我们可以使用简单的 require 语句导入 sqlite 库。
mysql = require "luasql.mysql"
变量 **mysql** 将通过引用主 **mysql** 表来提供对函数的访问。
设置连接
我们可以通过初始化 MySQL 环境,然后为该环境创建连接来设置连接。如下所示。
create environment object
env = assert (mysql.mysql())
connect to data source
con = assert (env:connect("test","root","123456"))上述连接将连接到现有的 MySQL 文件,并与新创建的文件建立连接。
以下代码是建立连接,然后遍历 MySQL 数据库中存在的表的完整代码。
示例
考虑以下代码:
-- load driver
local driver = require "luasql.mysql"
create environment object
env = assert (driver.mysql())
connect to data source
con = assert (env:connect("test","root","123456"))
-- reset our table
res = con:execute"DROP TABLE people"
res = assert (con:execute[[
CREATE TABLE people(
name varchar(50),
email varchar(50)
)
]])
add a few elements list = {
{ name="Mukul Latiyan", email="immukul@protonmail.com", },
{ name="Manoel Joaquim", email="manoel@cafundo.com", },
{ name="Rahul", email="rahul@protonmail.com", },
}
for i, p in pairs (list) do
res = assert (con:execute(string.format([[
INSERT INTO people
VALUES ('%s', '%s')]], p.name, p.email)
))
end
-- retrieve a cursor
cur = assert (con:execute"SELECT name, email from people")
-- print all rows, the rows will be indexed by field names
row = cur:fetch ({}, "a")
while row do
print(string.format("Name: %s, E-mail: %s", row.name, row.email))
-- reusing the table of results
row = cur:fetch (row, "a")
end
-- close everything
cur:close() -- already closed because all the result set was consumed
con:close()
env:close()输出
Name: Mukul Latiyan, E-mail: immukul@protonmail.com Name: Manoel Joaquim, E-mail: manoel@cafundo.com Name: Rahul, E-mail: rahul@protonmail.com
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP