SQLite 學習

SQLite簡介

SQLite是一個小型數(shù)據(jù)庫,它被集成到Android系統(tǒng)中完成數(shù)據(jù)庫部分。它不需要進行配置和管理,可以在Android系統(tǒng)中直接使用。

SQLite使用

1.SQLiteOpenHelper

SQLiteOpenHelper使用一個幫助類,通過繼承它并實現(xiàn)onCreate方法和Upgrade方法,來管理我們的數(shù)據(jù)庫。

  • onCreate方法是framework層調用,當你要打開某個數(shù)據(jù)庫,但是這個數(shù)據(jù)庫不存在時,framework就會調用這個方法去創(chuàng)建一個數(shù)據(jù)庫。
  • onUpgrade方法是在對數(shù)據(jù)庫進行更新時調用的,當你的數(shù)據(jù)庫版本增加時,你可以通過調用這個方法修改數(shù)據(jù)庫或者刪除數(shù)據(jù)庫然后通過調用onCreate方法重現(xiàn)創(chuàng)建數(shù)據(jù)庫。
    另外SQLiteOpenHelper還提供了getReadableDatabase方法和getWriteableDatabase方法去獲取一個SQLDatabase對象。
    上述兩方法中都會使用SQLiteDatabase對象作為參數(shù),這個類就代表了數(shù)據(jù)庫。

注意:對于數(shù)據(jù)庫創(chuàng)建的最佳實踐是,每個表都建一個類,并且在這個類中定義static的onCreate和onUpgrade方法,這些方法在SQLiteOpenHelper中被調用,這樣你的SQLiteOpenHelper實現(xiàn)類就有很好的可讀性了,即使你有很多的數(shù)據(jù)表。

2.SQLiteDatabase

SQLiteDatabase類是整個android數(shù)據(jù)庫的基礎類,它提供了對數(shù)據(jù)庫操作的增刪改查方法,另外還可以通過execSQL方法來執(zhí)行SQL語句。
ContentValues是對key/value的一個包裝,使用它可以將要插入或者要修改的數(shù)據(jù)以key/value的形式進行封裝,在使用相應增改方法的時候直接使用。

  • rawQuery 是SQLDatabase的方法,他可以使用SQL語句直接查詢。
  • query是推薦的查詢方法,它的使用類似于Hibernate中的查詢,只需要將參數(shù)查詢條件等一參數(shù)的形式提供,就可以得到結果
  • Cursor對象,這個是查詢的結果使用它可以遍歷整個查詢出的數(shù)據(jù)內容(table)
  • SQLiteBuilder是用來創(chuàng)建查詢語句的

3.Cursor

這個類是查詢結果的封裝,使用他可以很方便的獲取數(shù)據(jù)庫查詢結果。

  • getCount()返回結果數(shù)據(jù)的條數(shù)
  • moveFirst 將游標指向第一條查詢結果
  • moveNext 將游標指向下一條查詢結果
  • isAfterLast 檢查是否已經(jīng)到達end
    注意:Cursor在使用完成后需要調用close關閉。(TDOO:如果不關閉怎么辦)

4.DAO在Android中的使用

DAO的作用就是對外提供增刪改查接口,在他的內部封裝了SQLiteDatabase,以及SQLiteOpenHelper,將常用的增刪改查以靜態(tài)方法的形式對外提供。并且還封裝了一些對數(shù)據(jù)進行初步加工的方法。DAO的存在就是將應用層和數(shù)據(jù)持久層相互隔離,應用層需要操作數(shù)據(jù)時,只通過DAO來和持久層交互。在持久層的實現(xiàn)中可以引入CursorLoader之類的東西。在Android中的最佳實踐是使用ContentProvider來訪做DAO與數(shù)據(jù)層進行交互,因為Android為此提供了安全而完善的機制訪問數(shù)據(jù)層。

SQLite使用注意事項

  • 在對數(shù)據(jù)庫進行操作的時候會訪問文件系統(tǒng),很有可能是耗時操作,因此建議放在異步線程進行數(shù)據(jù)庫操作。
  • 應用創(chuàng)建的數(shù)據(jù)庫的位置為DATA/data/包名/databases/數(shù)據(jù)庫名,其中DATA是Environment.getDataDirectory() 方法返回的路徑。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,057評論 25 709
  • 前言 數(shù)據(jù)庫的應用已經(jīng)深入到生活和工作的方方面面,重要性已無需贅言,而對于移動領域的開發(fā)人員來說,SQLite則是...
    lvjsky閱讀 766評論 0 1
  • SQLite Design and Concepts API 分為兩大類 core API. 基本的SQL操作 e...
    我是花老虎閱讀 785評論 0 0
  • 我是南去的車 1 1990年7月,云山風景區(qū)因陡降暴雨主峰南坡坍塌,旋即發(fā)生巨大的泥石流,濁流滾滾,狂瀉而下,中間...
    獨行的老雕蟲閱讀 343評論 2 3
  • 今天我只說了三句話 一句用來向大家喊早 一句用來跟陌生人道謝 一句用來對身邊的人說晚安 今天太陽照了我三次 一次我...
    小二不2閱讀 206評論 2 1

友情鏈接更多精彩內容