如何在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