Lua 基础教学:第十八篇数据库编程 在本篇文章中,我们将探讨 Lua 中的数据库编程。Lua 可以通过第三方库与多种数据库进行交互,包括 SQLite、MySQL 和 PostgreSQL。本文将重点介绍如何使用 Lua 与 SQLite 进行数据库操作。 安装 LuaSQLite首先,我们需要安装 LuaSQLite,这是一个用于 SQLite 数据库的 Lua 库。可以使用 LuaRocks 安装: luarocks install luasql-sqlite3使用 LuaSQLite 进行数据库操作LuaSQLite 提供了一套简单易用的 API,用于与 SQLite 数据库进行交互。 连接数据库以下是一个连接 SQLite 数据库的示例: local luasql = require "luasql.sqlite3"
local env = luasql.sqlite3()
local conn = env:connect("test.db")
if conn then
print("Connected to database successfully!")
else
print("Failed to connect to database.")
end创建表我们可以使用 conn:execute 函数执行 SQL 语句,例如创建表: local create_table_sql = [[
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER
);
]]
local res, err = conn:execute(create_table_sql)
if res then
print("Table created successfully!")
else
print("Failed to create table: " .. err)
end插入数据使用 conn:execute 插入数据到表中: local insert_sql = [[
INSERT INTO users (name, age) VALUES ('Alice', 30);
INSERT INTO users (name, age) VALUES ('Bob', 25);
]]
local res, err = conn:execute(insert_sql)
if res then
print("Data inserted successfully!")
else
print("Failed to insert data: " .. err)
end查询数据使用 conn:execute 查询数据,并通过游标 cur 迭代结果集: local query_sql = "SELECT * FROM users;"
local cur = conn:execute(query_sql)
if cur then
print("Query executed successfully!")
local row = cur:fetch({}, "a")
while row do
print(string.format("ID: %d, Name: %s, Age: %d", row.id, row.name, row.age))
row = cur:fetch(row, "a")
end
else
print("Failed to execute query.")
end更新数据使用 conn:execute 更新表中的数据: local update_sql = "UPDATE users SET age = 31 WHERE name = 'Alice';"
local res, err = conn:execute(update_sql)
if res then
print("Data updated successfully!")
else
print("Failed to update data: " .. err)
end删除数据使用 conn:execute 删除表中的数据: local delete_sql = "DELETE FROM users WHERE name = 'Bob';"
local res, err = conn:execute(delete_sql)
if res then
print("Data deleted successfully!")
else
print("Failed to delete data: " .. err)
end关闭连接完成数据库操作后,记得关闭连接和环境: conn:close()
env:close()使用 LuaDBI 进行数据库操作LuaDBI 是另一个常用的数据库库,支持多种数据库。以下是使用 LuaDBI 连接和操作 SQLite 数据库的示例: luarocks install luadbi-sqlite3连接数据库local dbi = require("DBI")
local conn = dbi.Connect("SQLite3", "test.db")
if conn then
print("Connected to database successfully!")
else
print("Failed to connect to database.")
end创建表、插入数据、查询数据与 LuaSQLite 类似,可以使用 conn:execute 执行 SQL 语句: -- 创建表
local res = conn:execute([[
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER
);
]])
-- 插入数据
conn:execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")
conn:execute("INSERT INTO users (name, age) VALUES ('Bob', 25)")
-- 查询数据
local stmt, err = conn:prepare("SELECT * FROM users")
stmt:execute()
for row in stmt:rows() do
print(string.format("ID: %d, Name: %s, Age: %d", row.id, row.name, row.age))
end
stmt:close()总结在这篇教程中,我们介绍了 Lua 中的数据库编程。我们学习了如何使用 LuaSQLite 和 LuaDBI 连接和操作 SQLite 数据库。通过这些功能,可以轻松地将数据库操作集成到 Lua 应用程序中。在接下来的教程中,我们将探讨 Lua 的测试和调试技巧。 继续关注我们的 Lua 教程系列,如果你有任何问题或建议,请在评论区留言。 |