【安卓按鍵】本地數據庫的初步學習

大家好,我是3分鐘學堂的郭立員,今天繼續安卓按鍵的文章教程。

大家好,我是郭立員,今天給大家介紹一下本地非加密數據庫,這里有兩個關鍵詞:本地、非加密。

首先我們來了解一下什么是數據庫啊~

“是一個長期存儲在計算機內的、有組織的、可共享的、統一管理的大量數據的集合。”

上面是百度百科查的,簡單點理解就是存數據的表格。

數據庫文件的后綴名是.db

數據庫的組成部分:

一個數據庫包含:數據庫名,表名,列名,表數據

我以截圖為例:

數據庫名:my.db

表名:sms,一個數據庫可以有多張表

列名:有3列數據,data1,data2,data3,對于表的列是沒有上限的

表數據:一共1行3列,支持多行數據

如果你對辦公軟件比較熟悉的話,是不是覺得數據庫和Excel表格很像,可以把數據存入到表格當中。

了解完數據庫構成以后,我們對于數據庫基本要完成以下這么幾個操作:

①新建數據庫

②添加數據

③刪除數據

④讀取數據

⑤修改數據

對于到我們安卓按鍵插件的命令如下圖:

接下來是這篇文章的重點,就是在安卓按鍵里面怎么操作數據庫:

注:代碼區均可向右滑動查看完整代碼。

【一】新建數據庫

TracePrintsqlite3.SQLCreate(數據庫路徑,?表名,?列名)

新建完數據庫以后會得到一個不含數據只有表頭的空表:

舉個例子,在雷電模擬器的共享文件夾中新建一個名字叫my.db的數據庫,數據庫中有一個表叫sms,表中有3列,分別是data1,data2,data3

Import"sqlite3.lua"

TracePrint?sqlite3.SQLCreate("/sdcard/pictures/my.db","sms",?{"data1","data2","data3"})

當然你可以像命令介紹里面那樣把數據庫路徑、列名都單獨定義一個變量,這里為了讓大家看得明白,我就直接把參數寫進命令里面了。

【二】添加數據

建好數據庫就需要往里面放數據了,怎么操作呢?

這里用一個詞形容叫“對號入座”,你要把數據放到哪個數據庫,哪個表,哪一列?

TracePrintsqlite3.SQLInsert(數據庫名, 表名, {列名:內容})

還是截圖那個例子:

我們有三個數據,分別是"這是第1條新記錄","這是第2條新記錄","這是第3條新記錄"。

按照剛剛說的對號入座~

放到數據庫是"/sdcard/pictures/my.db"

放的表是?"sms"

放的列是,{"data1","data2","data3"}這三列。

TracePrint sqlite3.SQLInsert("/sdcard/pictures/my.db","sms",?{"data1":"這是第1條新記錄","data2":"這是第2條新記錄","data3":"這是第3條新記錄"})

這里需要注意一點,這個添加數據,是以追加的形式,就是在原有數據的下一行添加內容,而且是整行添加,沒有的數據添加的列空白。

【三】讀取數據

讀取數據也就是查詢數據庫sqlite3.SQLSelect ,這是一個有難度的命令,難點在于“查詢的過濾條件”這個參數,因為需要SQLite語法,不過好在它是一個可選填的參數,對于這類參數,我們初學時的態度就是可選填就是不填。

看一下命令介紹一共4個參數,去掉2個選填的,就剩2個了。

Dim ret=sqlite3.SQLSelect(數據庫路徑, 表名)

這里ret是用來存儲查詢結果的變量,它存儲內容的格式很關鍵,看命令介紹返回值是鍵值表,那具體什么格式的鍵值表呢,這里姑且賣個關子,下面用例子說明。

還是讀取剛剛新建的數據庫my.db中的sms表

Import"sqlite3.lua"

Dim ret = sqlite3.SQLSelect("/sdcard/pictures/my.db","sms")

Dim json=encode.TableToJson(ret)

TracePrint json

我把返回值用命令轉成了json格式,可以直接調試輸出,放入文本給大家截圖看一下。

這是一個二維鍵值表,也可以理解為二維數組,知道它的格式以后,稍微有點json提取經驗的朋友應該就知道怎么提取了。

對比這個表的截圖,可以看到返回值的格式,是按行存儲的,第一行3個內容存入到表的第一個內容,第二行存入到表的第二個內容,第三行存入到表的第三個內容。

比方說我想要提取,第2行的data3對應的數據,該怎么寫代碼?

Import "sqlite3.lua"

Dim ret = sqlite3.SQLSelect("/sdcard/pictures/my.db","sms")

TracePrint ret[2]["data3"]

看代碼找關系:

[2]代碼第2行

["data3"]代表列名叫data3的列

講完上面這些,還有2個命令“刪除數據庫記錄”和“修改數據庫內容”,這兩個就不講了,“刪除數據庫記錄”不講的原因是我不會SQLite語法,所以沒法講。“修改數據庫內容”和“添加數據”是差不多的,唯一不同點也是SQLite語法那個選填的參數,所以也是沒法講。

雖然我不講,但是如果你想深入學習數據庫,SQLite語法也是要去學的。

最后說一下我為啥寫這篇文章,昨天有朋友問我怎么讀取通訊錄的號碼,查了一下號碼存儲的位置,發現是一個數據庫,所以就研究了一下,才有了今天的文章。

通訊錄的數據路徑是

"/data/data/com.android.providers.contacts/databases/contacts2.db"

想研究的朋友可以自己試試看。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容