Android數據庫高手祕籍:SQLite命令

要想熟練地操做任何一個數據庫,最最基本的要求就是要懂SQL語言,這也是每一個程序員都應該掌握的技能。雖然說SQL博大精深,要想精通確實很難,但最基本的一些建表命令,增刪改查,你們仍是必需要學會的。android

SQL(Structured Query Language)是一種標準的數據庫查詢語言,即全部的關係型數據庫都會支持它,只不過每種數據庫對SQL語言的支持與標準存在着細微的不一樣。咱們無須關心其它數據庫對SQL語言的支持狀況,這裏咱們只要把重點放在SQLite上就能夠了。下面我將使用模擬器來對SQLite支持的各類命令進行演示,若是你想用手機的話也能夠,但要確保你的手機已經Root,而且包含sqlite3這個命令文件。程序員

首先確保模擬器已經鏈接上了電腦,而後在命令行輸入adb shell進入控制檯,以下圖所示:sql

注意#符號表示咱們當前已是超級用戶了,若是顯示的是$符號,表示當前只是普通用戶而已,這時還須要輸入su命令切換一下用戶身份才行。shell

有了超級用戶權限以後,咱們能作的事情就不少了,這裏咱們先查看一下系統自帶的聯繫人表吧。進入到/data/data目錄下,以下圖所示:數據庫

全部應用程序的本地存儲文件都是存放在這個目錄下面的。爲了要讓不一樣應用程序之間的數據容易區別開來,Android是使用應用程序包名進行分開管理,也就是說每一個應用程序的本地存儲文件都會存放在本身應用程序包名的那個目錄下,這裏咱們ls一下看看有多少子目錄:數據結構

OK,確實有不少,畢竟手機上全部的應用程序都在這裏。其中,com.android.providers.contacts中存放的就是聯繫人的相關數據,咱們進入到這個目錄再ls一下:ide

能夠看到,目前有databases、files、lib和shared_prefs這幾個子目錄。其中databases確定是用於存放數據庫文件的,files是用於存放普通文本文件的,lib是用於存放so庫的,shared_prefs則是用於存放shared文件的。這是Android數據持久化的幾種可選方式,對這部份內容不太瞭解的朋友能夠參考《第一行代碼——Android》的第六章。學習

接着進入到databases目錄中,再ls:spa

其中後綴名爲journal的文件是日誌文件,咱們不用管,contacts2.db和profile.db纔是真正的數據庫文件,可使用sqlite3命令來打開數據庫,以下圖所示:.net

好的,數據庫已經打開了,那麼咱們怎麼才能知道當前數據庫中有哪些表呢?很簡單,.table命令就能夠作到了:

哇,居然有這麼多張表!是的,聯繫人的數據結構很是複雜,不少的數據都是分表存儲的。這裏咱們隨便挑一張表,好比說accounts表,若是我想知道這張表中有哪些列應該怎麼辦呢?在MySQL中可使用desc accounts這個命令,但SQLite卻不認識這個命令,畢竟它們是有差別化的。SQLite中可使用pragma table_info(TABLE_NAME)這個命令來查看錶的數據結構,以下圖所示:

能夠看到,一共顯示了三條結果,表示accounts表中共有三列。可是,全部的字段都縮在了一行裏面,並用「|」符號分隔,這樣咱們很難看出每一個字段的含義。很簡單,只須要換一種顯示模式就好了,好比說line模式就挺不錯的。輸入.mode line命令切換顯示模式,而後從新運行pragma命令,結果以下圖所示:

怎麼樣,這樣就清晰多了吧?這三列的列名分別是account_name、account_type和data_set,數據類型都是TEXT(字符串),容許爲空,而且都不是主鍵。好,那我如今想查一查accounts表中的數據呢?這就太簡單了,使用select語句就能夠了,以下所示:

恩?怎麼只有一條空數據啊。貌似模擬器上默認就是這樣的,若是你用的是手機的話,這裏應該就能夠查到真正的數據了。不過不要緊,咱們能夠在設置裏面手動添加一個郵箱帳戶,以下圖所示:

如今再來從新查詢一遍accounts表,以下所示:

OK,添加的新帳戶已經成功查出來了。

除了查詢命令以外,還有其它的增刪改命令都和標準的SQL語法是相同的,即insert、delete和update,因爲比較簡單,我就再也不贅述了。比較值得一提的是,每一個SQLite數據庫中都還有一個隱藏的sqlite_master表,這裏記載了當前數據庫中全部表的建表語句,可使用select * from sqlite_master命令進行查看:

結果太多了是否是?一屏根本就顯示不下嘛。不要着急,別忘了咱們使用的是select命令,可使用where語句來過濾出咱們想要查詢的那部份內容,以下圖所示:

OK,CREATE TABLE accounts (account_name TEXT, account_type TEXT, data_set TEXT) 這就是accounts表的建表語句了,經過這種方式咱們能夠查詢到任意一張表的建表語句,從而對咱們學習和分析數據庫表結構有所幫助。

有些朋友可能會以爲,每次都要輸入select命令來查詢表中的數據太麻煩了。沒錯,並且還要保證手機是鏈接在電腦上的時候才能查詢,確實太不方便。幸運的是,有些手機軟件已經提供了數據庫表查詢的功能,使得咱們隨時隨地均可以方便地查看數據庫中的數據,好比Root Explorer這款軟件就不錯。

仍然是確保你的手機已經Root,而後安裝Root Explorer,打開軟件以後按照咱們前面介紹的路徑,進入/data/data/com.android.providers.contacts/databases,點擊contacts2.db數據庫,選擇內置數據庫查看器,而後隨便點擊一張表就能夠查看到裏面的數據了,以下圖所示:

使用這種方法,咱們能夠隨時查看數據庫表中的最新數據,直觀又方便,在程序開發的時候能夠起到很是大的幫助。

相關文章
相關標籤/搜索