簡介
Android會將我們的持久性數(shù)據(jù)存儲在文件系統(tǒng)中,為了簡化我們開發(fā)應(yīng)用時所需要寫入的類容,Android提供了多個結(jié)構(gòu)化的存儲選項:SharedPreferences、SQLite Database等。
SharedPreferences類會提供通用的框架,使我們可以保存和檢索原始數(shù)據(jù)類型,如布爾型(boolean)、浮點型(float)、整型(int)、長整型(long)和字符串(string)的持久性鍵值對。
但事實上,SharedPreferences的這種簡單的鍵值對框架無法提供足夠的靈活性,因此Android還提供了SQLite。
SQLite是一種輕量級關(guān)系型數(shù)據(jù)庫,通過寫入和查詢語句,以及SQLite變體的結(jié)構(gòu)化查詢語言(SQL)來與SQLite數(shù)據(jù)庫互動。
Android提供了SQLiteOpenHelper幫助類來讓我們更加方便地管理數(shù)據(jù)庫,對數(shù)據(jù)庫進(jìn)行創(chuàng)建、更新等操作。
SQLiteOpenHelper是一個抽象類,所以我們需要創(chuàng)建一個自己地抽象類。SQLiteOpenHelper類中有兩個抽象方法:onCreate()和onUpgrade(),我們需要在自己的幫助類中重寫這兩個方法。
SQLiteOpenHelper中還有兩個非常重要的實例方法:getReadableDatabase()和getWritableDatabase()。這兩個方法都可以創(chuàng)建或打開一個現(xiàn)有的數(shù)據(jù)庫,并返回一個可對數(shù)據(jù)庫進(jìn)行讀寫操作的對象。
PS:當(dāng)數(shù)據(jù)庫不可寫入的時候,getReadableDatabase()方法返回的對象將以只讀的方式打開數(shù)據(jù)庫,而getWritableDatabase()則會出現(xiàn)異常。
SQLiteOpenHelper中有兩個構(gòu)造方法可供重寫
SQLiteOpenHelper(Contextcontext,Stringname, SQLiteDatabase.CursorFactory factory, int version)
SQLiteOpenHelper(Contextcontext,Stringname, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler)
通常使用參數(shù)少的構(gòu)造方法。
第一個參數(shù)是Context第二個參數(shù)是數(shù)據(jù)庫名,創(chuàng)建數(shù)據(jù)庫時使用的就是這里指定的名稱。
第三個參數(shù)允許我們在查詢數(shù)據(jù)時返回一個自定義的Cursor,一般傳入null。
第四個參數(shù)表示當(dāng)前數(shù)據(jù)庫的版本號,用于對數(shù)據(jù)庫進(jìn)行升級操作。
構(gòu)建出SQLiteOpenHelper實例后,再調(diào)用getReadableDatabase()或getWritableDatabase()方法就能夠創(chuàng)建數(shù)據(jù)庫了。
以上參考自:郭霖大神的《第一行代碼》
筆者博客:Vinfai