在程式中想要儲存遊戲與玩家資訊,且想加入查詢功能的話,可以用 SQLite 來存放相關資料。以下記錄如何在 Corona SDK 裡面使用 SQLite資料庫。(原始碼連結)

A.建立資料庫
1.首先在程式碼中匯入 sqlite3
2.使用 system.pathForFile()找出檔案的路徑
3.用sqlite3.open()打開資料庫。

程式碼於下:
SQL1
上面程式碼中,使用system.pathForFile(“data.db”,system.DocumentsDirectory)找出檔案的路徑。system.pathForFile函式的第一個參數是檔案名稱,後面是系統的路徑。在範例中,直接寫了檔案名稱是data.db。如果路徑中有這個檔案名的話,會回傳檔案的路徑;如果沒有這個檔案名,則會直接建立名為data.db的檔案。

B.建立資料表(create table)
建立了資料庫之後,存資料就好像我們使用Excel表格一樣:
SQL2
我們先在資料庫裡面建立一個資料表格。之後就在資料表格裡面新增資料。比方說我們要建立如上的表格,程式碼如下:
SQL3
繼續紀錄下面的內容之前,先介紹在sqlite的基本語法:要執行和資料庫相關的指令的話,用 file:exec(資料庫指令)就好了。上面程式碼中,用橘色標示的、就是和資料庫相關的語法。在前兩行,先建立一個資料庫指令。最後一行,再用db:exec()去執行指令。
前兩行的程式碼可以用來產生建立資料表格的指令:CREATE TABLE IF NOT EXIST 意思是如果資料表格不存在的話,就建立一個資料表格。
在 CREATE TABLE IF NOT EXIST 後面加上新建表格的名字。上面的範例是建立一個叫做test_table的資料表格。
在新資料表格的名稱後面有一個大括弧,中間放的參數,就是表格的項目。剛開始我們打算建立只有四個項目的表格,所以括弧中有四個參數。
第一個參數是 id,後面的INTEGER,代表這個id項目中要存的是整數;PRIMARY KEY的意思是說這個表格中id這項是主要的項目; autoincrement代表之後存在這個項目的值是自動增加的。
第二的參數是 name,之後存玩家的姓名。
第三個參數是 sex,之後存玩家的性別。
最後的的參數是 score,之後存玩家的分數。
如上解釋,前兩行的程式碼可以用來產生建立資料表格的指令,把這個指令存在 tablesetup 變數,接著再用db:exec()執行資料庫指令,就可以建立期望的資料表。

C.加入資料
建立資料表之後,程式如果要加入新資料的話,就用下面的程式碼來加入:
SQL4
用 INSERT INTO加入新的資料。後面連接test_table是要加入新資料的資料表名稱。VALUES()的括弧中,加入一條新的資料:第一個項目id由於之前設定是autoincrement自動增加,所以寫了NULL,讓程式自動增加;接下來名字name是 “Thomas”、性別sex是”M”,得到的分數score是 660。執行這樣的資料庫指令後,空空的資料表格中加了一筆新的資料,變成:
SQL5

D.用迴圈加入資料
除了一筆一筆地加入資料以外,還可以用下面的程式碼:
SQL6
先用people把要存入資料庫的資料放在其中。加入的原理和上面一筆一筆加入的方法類似。只不過如果是變數的話,要在變數前,加入’]]..;而在變數之後,加入..[[‘ 。

E.更新資料
如果要更新資料的話,可以用下面的程式碼:
SQL7

這樣的程式碼就可以把id=3、原本是 David的名字改成Updated Name。

F.刪除資料
如果要刪除資料的話,可以用下面的程式碼:
SQL8

這樣的程式碼可以就可以刪除id=1的資料。也就是一開始加入的Thomas。

G.讀取資料
用下面的程式碼可以讀出資料:
SQL9

程式碼先建立一個loadedPeople的table,然後再把資料庫的資料讀進,最後印出loadedPeople。用for row in db:nrows(“SELECT * FROM test_table”) do這樣的寫法,可以把所有的資料以迴圈的方式讀出。
上面範例是讀出 test_table 中所有的資料。除此以外,還可以用 SELECT 讀出各種資料。更多 SELECT 的選取方式,請看:http://zetcode.com/db/sqlite/select/

H.關閉資料庫
使用完資料庫之後,可以用db:close()關閉資料庫。請看下面的範例程式碼:

這樣的寫法讓離開程式的時候,關閉資料庫是不錯的寫法。歡迎大家參考。

SQL10

I.自訂函式碼
由於資料庫指令蠻複雜的,如果把它包成函式來使用的話,會更方便。例如:

自訂函式
以上是新增資料的函式。知道原理也可以做出刪除、更新、讀取資料等函式。

本篇文章就要在這邊結束了。希望有幫到大家。在 Corona SDK使用資料庫很簡單吧?會了之後可以多多使用嚕~。

(1253)

superstardj

been a DJ, a rapper, a musician and a recording artist... a novel-writer, a language-book author, and a chief editor... a painter, a book-cover designer and many more... right now a programmer who designs mobile application, both iOS and Android devices...

Leave a Reply

Your email address will not be published. Required fields are marked *