Android數(shù)據(jù)庫操作(一)——基本SQLite命令

1枫甲、前言

SQLite數(shù)據(jù)庫系統(tǒng)特點

輕型锚国,嵌入式嗦随,ACID關系型數(shù)據(jù)庫

SQLite優(yōu)缺點
  • 優(yōu)點:

輕量陡叠、高效
綠色無需“安裝”
零配置
動態(tài)數(shù)據(jù)類型

  • 缺點:

并發(fā)性能
網(wǎng)絡文件支持弱
僅支持SQL功能子集,有很多高級的功能不支持

Android平臺上的Sqlite數(shù)據(jù)庫用途

APP運行數(shù)據(jù)的保存籽御,如參數(shù)等
離線功能
數(shù)據(jù)處理

Android平臺SQLite使用

  • 具體使用兩個類
  • SQLiteDatabase類:封裝了管理數(shù)據(jù)庫的各種方法练慕,如insert惰匙、delete、update铃将、query
  • SQLiteOpenHelper類:封裝了數(shù)據(jù)庫創(chuàng)建和版本管理

2项鬼、SQLite命令

本節(jié)摘抄自: Android數(shù)據(jù)庫高手秘籍(一)——SQLite命令強烈建議進入原博客查看學習

  • 首先確保模擬器已近連接上了電腦

  • 命令行輸入 adb shell 進入控制臺劲阎,如下圖所示:

    adb shell

注意:#符號表示我們當前已經(jīng)是超級用戶了绘盟,如果顯示$符號,表示當前只是普通用戶而已哪工,這時還需輸入su命令切換一下用戶身份才行奥此。

  • 有了超級用戶權限之后弧哎,就可以做很多事情了雁比,如:查看一下系統(tǒng)自帶的聯(lián)系人表
  • 通過命令行 cd data/data 進入到 /data/data目錄下,如下圖所示:
    cd data/data

所有應用程序的本地存儲文件都是存放在這個目錄下面的撤嫩。

  • 為了要讓不同應用程序之間的數(shù)據(jù)容易區(qū)別開來偎捎,Android是使用應用程序包名進行分開管理,也就是說每個應用程序的本地存儲文件都會存放在自己應用程序包名的那個目錄下序攘,
  • 這里我們通過命令行 ls 一下看看有多少子目錄:
    ls

子目錄有很多茴她,手機上所有應用程序都在這里,其中 com.android.providers.contacts就是存放聯(lián)系人的相關數(shù)據(jù)

  • 通過命令行 cd 包名ls 進入查看該包下的目錄:
    cd 具體包名+ls

可以看到程奠,目前有databases丈牢、files、lib和shared_prefs這幾個子目錄瞄沙。其中databases肯定是用于存放數(shù)據(jù)庫文件的己沛,files是用于存放普通文本文件的,lib是用于存放so庫的距境,shared_prefs則是用于存放shared文件的,這是Android數(shù)據(jù)持久化的幾種可選方式申尼。

  • 接著進入到databases目錄中,再 ls
    cd databases + ls

其中后綴名為journal的文件是日志文件垫桂,我們不用管师幕,contacts2.dbprofile.db才是真正的數(shù)據(jù)庫文件

  • 使用sqlite3命令 sqlite3 數(shù)據(jù)庫文件全名 來打開數(shù)據(jù)庫,如下圖所示:

    sqlite3 數(shù)據(jù)庫文件名

  • 好的诬滩,數(shù)據(jù)庫已經(jīng)打開了霹粥,那么我們怎么才能知道當前數(shù)據(jù)庫中有哪些表呢?

  • 輸入命令行 .table 就可以查看當前數(shù)據(jù)庫中的表:

    **.table**

  • 這里有這么多張表疼鸟?是的蒙挑,聯(lián)系人的數(shù)據(jù)結構非常復雜,很多的數(shù)據(jù)都是分表存儲的愚臀。這里我們隨便挑一張表忆蚀,比如說accounts表矾利,如果我想知道這張表中有哪些列應該怎么辦呢?在MySQL中可以使用desc accounts這個命令馋袜,但SQLite卻不認識這個命令男旗,畢竟它們是有差異化的。

  • SQLite中可以使用pragma table_info(TABLE_NAME);這個命令來查看表的數(shù)據(jù)結構欣鳖,大致如下圖所示:

    pragma table_info(表名)

  • 可以看到察皇,一共顯示了三條結果,表示accounts表中共有三列泽台。但是什荣,所有的字段都縮在了一行里面,并用 “|” 符號分隔怀酷,這樣我們很難看出每個字段的含義稻爬。很簡單,只需要換一種顯示模式就行了蜕依,比如說 line 模式就挺不錯的桅锄。輸入 .mode line 命令切換顯示模式,然后重新運行 pragma命令样眠, 結果如下圖所示:

  • 這樣就清晰多了吧友瘤?這三列的列名分別是account_name、account_type和data_set檐束,數(shù)據(jù)類型都是TEXT(字符串)辫秧,允許為空,并且都不是主鍵被丧。好盟戏,那我現(xiàn)在想查一查accounts表中的數(shù)據(jù)呢?這就太簡單了晚碾,使用 select語句 就可以了抓半,如下所示:

  • 貌似模擬器上默認就只有一條空數(shù)據(jù),如果你用的是手機的話格嘁,這里應該就可以查到真正的數(shù)據(jù)了笛求。不過沒關系,我們可以在設置里面手動添加一個郵箱賬戶糕簿,如下圖所示:


  • 現(xiàn)在再來重新查詢一遍accounts表探入,如下所示:


    20140901221137578.png
  • 除了查詢命令之外,還有其它的增刪改命令都和標準的SQL語法是相同的懂诗,即insert蜂嗽、delete和update,由于比較簡單殃恒,不再贅述了植旧。比較值得一提的是辱揭,每個SQLite數(shù)據(jù)庫中都還有一個隱藏的sqlite_master表,這里記載了當前數(shù)據(jù)庫中所有表的建表語句病附,可以使用select * from sqlite_master命令進行查看:

  • 結果太多了是不是问窃?一屏根本就顯示不下嘛。不要著急完沪,別忘了我們使用的是select命令域庇,可以使用where語句來過濾出我們想要查詢的那部分內容,如下圖所示:


**CREATE TABLE accounts (account_name TEXT, account_type TEXT, data_set TEXT) **這就是accounts表的建表語句了覆积,通過這種方式我們可以查詢到任意一張表的建表語句听皿,從而對我們學習和分析數(shù)據(jù)庫表結構有所幫助。

友情提示:

  • 有些朋友可能會覺得宽档,每次都要輸入select命令來查詢表中的數(shù)據(jù)太麻煩了尉姨。沒錯,而且還要保證手機是連接在電腦上的時候才能查詢雌贱,確實太不方便啊送。幸運的是偿短,有些手機軟件已經(jīng)提供了數(shù)據(jù)庫表查詢的功能欣孤,使得我們隨時隨地都可以方便地查看數(shù)據(jù)庫中的數(shù)據(jù),比如Root Explorer這款軟件就不錯昔逗。
  • 仍然是確保你的手機已經(jīng)Root降传,然后安裝Root Explorer,打開軟件之后按照我們前面介紹的路徑勾怒,進入/data/data/com.android.providers.contacts/databases婆排,點擊contacts2.db數(shù)據(jù)庫,選擇內置數(shù)據(jù)庫查看器笔链,然后隨便點擊一張表就可以查看到里面的數(shù)據(jù)了段只,如下圖所示:


  • 使用這種方法,我們可以隨時查看數(shù)據(jù)庫表中的最新數(shù)據(jù)鉴扫,直觀又方便赞枕,在程序開發(fā)的時候可以起到非常大的幫助。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末坪创,一起剝皮案震驚了整個濱河市炕婶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌莱预,老刑警劉巖柠掂,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異依沮,居然都是意外死亡涯贞,警方通過查閱死者的電腦和手機枪狂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宋渔,“玉大人摘完,你說我怎么就攤上這事∩邓” “怎么了孝治?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長审磁。 經(jīng)常有香客問我谈飒,道長,這世上最難降的妖魔是什么态蒂? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任杭措,我火速辦了婚禮,結果婚禮上钾恢,老公的妹妹穿的比我還像新娘手素。我一直安慰自己,他們只是感情好瘩蚪,可當我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布泉懦。 她就那樣靜靜地躺著,像睡著了一般疹瘦。 火紅的嫁衣襯著肌膚如雪崩哩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天言沐,我揣著相機與錄音邓嘹,去河邊找鬼。 笑死险胰,一個胖子當著我的面吹牛汹押,可吹牛的內容都是我干的。 我是一名探鬼主播起便,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼棚贾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了缨睡?” 一聲冷哼從身側響起鸟悴,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎奖年,沒想到半個月后细诸,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡陋守,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年震贵,在試婚紗的時候發(fā)現(xiàn)自己被綠了利赋。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡猩系,死狀恐怖媚送,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情寇甸,我是刑警寧澤塘偎,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站拿霉,受9級特大地震影響吟秩,放射性物質發(fā)生泄漏。R本人自食惡果不足惜绽淘,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一涵防、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧沪铭,春花似錦壮池、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至驮肉,卻和暖如春熏矿,著一層夾襖步出監(jiān)牢的瞬間已骇,已是汗流浹背离钝。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留褪储,地道東北人卵渴。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像鲤竹,于是被迫代替她去往敵國和親浪读。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內容