鍍金池/ 教程/ C/ Lua數(shù)據(jù)庫/MySQL操作
Lua邏輯運(yùn)算符
Lua其他運(yùn)算符
Lua協(xié)同程序
Lua break語句
Lua運(yùn)算符
Lua面向?qū)ο?/span>
Lua教程
Lua函數(shù)
Lua數(shù)據(jù)庫/MySQL操作
Lua關(guān)系運(yùn)算符
Lua錯誤處理
Lua數(shù)據(jù)類型
Lua嵌套循環(huán)
Lua變量
Lua基本語法
Lua字符串
Lua for循環(huán)
Lua if語句嵌套
Lua運(yùn)算符優(yōu)先級
Lua Web編程
Lua while循環(huán)
Lua開發(fā)環(huán)境
Lua if...else語句
Lua標(biāo)準(zhǔn)庫
Lua游戲編程
Lua if語句
Lua算術(shù)運(yùn)算符
Lua表格
Lua決策
Lua文件I/O
Lua循環(huán)
Lua數(shù)組
Lua元表
Lua repeat...until循環(huán)
Lua迭代器
Lua調(diào)試
Lua模塊
Lua垃圾收集

Lua數(shù)據(jù)庫/MySQL操作

對于簡單的數(shù)據(jù)操作,我們可以使用文件,但是,有時(shí)候這些文件操作效率不高,可擴(kuò)展性和強(qiáng)大不好。所以我們可能會經(jīng)常切換到使用數(shù)據(jù)庫。 LuaSQL是從Lua一些數(shù)據(jù)庫管理系統(tǒng)的一個(gè)簡單的接口。 LuaSQL它提供了對不同類型的SQL支持庫。這包括:

  • SQLite

  • Mysql

  • ODBC

在本教程中,將涵蓋Lua中的SQLite和MySQL數(shù)據(jù)庫處理。使用這個(gè)通用接口為應(yīng)盡可能實(shí)施于其它類型的數(shù)據(jù)庫。首先,讓我們看看如何在MySQL中執(zhí)行操作。

MySQL數(shù)據(jù)庫的設(shè)置

以使用下面的示例以預(yù)期方式工作,我們所需要的初始數(shù)據(jù)庫設(shè)置。假設(shè)如下面列出:

  • 已經(jīng)安裝并設(shè)置MySQL的默認(rèn)用戶以root,密碼為“123456”。

  • 您已經(jīng)創(chuàng)建了一個(gè)數(shù)據(jù)庫test。

  • 您通過MySQL教程去了解MySQL基礎(chǔ)知識。

導(dǎo)入MySQL

我們可以用一個(gè)簡單語句導(dǎo)入SQLite庫,假設(shè)Lua中正確實(shí)現(xiàn)并已完成。在安裝過程中,文件夾libsql包含數(shù)據(jù)庫相關(guān)的文件。

 mysql = require "luasql.mysql"

可變的MySQL將提供通過參照主MySQL表訪問該功能。

建立連接

我們可以設(shè)立一個(gè)啟動MySQL的環(huán)境,然后創(chuàng)建環(huán)境的連接。如下所示。

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

上面的連接將連接到現(xiàn)有的MySQL文件并建立與新創(chuàng)建的文件的連接。

執(zhí)行函數(shù)

這將有助于我們做的創(chuàng)建,插入,刪除,更新等,所有的數(shù)據(jù)庫操作執(zhí)行簡單的功能。語法如下所示

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

在上面的語法,我們需要確保conn是開放的和現(xiàn)有的MySQL連接并替換“MySQLSTATEMENT”使用正確的語句。

創(chuàng)建表的例子

一個(gè)簡單的創(chuàng)建表的示例如下所示。它創(chuàng)建類型為int和varchar類型,兩個(gè)參數(shù)ID和name的表。

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 )

當(dāng)運(yùn)行上面的程序,表名為sample將有兩列分別是id和name會被創(chuàng)建。

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

如果有錯誤,會返回nil的錯誤語句。下面一個(gè)簡單的錯誤語句如下所示。

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

Insert語句的例子

MySQL的INSERT語句如下所示。

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

Update語句的例子

對于MySQL UPDATE語句如下所示。

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

刪除Delete 語句的例子

DELETE語句-MySQL如下所示。

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

Select語句的例子

就select語句而言,我們需要遍歷每一行,并提取所需的數(shù)據(jù)。下面簡單的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 是一個(gè)開放的MySQL連接。由執(zhí)行語句返回游標(biāo),可以通過表的反應(yīng)返回獲取所需的選擇數(shù)據(jù)。

一個(gè)完整的例子

所有上述聲明一個(gè)完整的例子給出下面的參考。

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','Raj')]])
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()上一篇:Lua循環(huán)下一篇:Lua開發(fā)環(huán)境