| 
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 教程系列,如果你有任何问题或建议,请在评论区留言。  |