1. 程式人生 > >Android之SQLite本地快取資料

Android之SQLite本地快取資料

一、在android中資料本地儲存分為SQLite資料儲存,Sharedprferences資料的儲存,File儲存,ContentProvider、還有一種為網路(Network)

1、在這裡主要就說明SQLite資料的儲存, SQLite是輕量級嵌入式資料庫引擎,它支援SQL語言,並且只利用很少的記憶體就有很好的效能。此外它還是開源的,任何人都可以使用它。許多開源專案(Mozilla,PHP,Python)都使用了SQLite。SQLite由以下幾個元件組成:SQL編譯器、核心、後端以及附件。SQLite通過利用虛擬資料庫引擎(VDBE)。使除錯、修改和擴充套件SQLite的核心變得更加方便。

2、Android提供了SQLiteOpenHelper幫助建立一個數據庫,只要繼承SQLiteOpenHelper類,就可以建立資料庫。SQLiteOpenHelper類根據開發應用程式的需要,封裝了建立和更新資料庫使用的邏輯。SQLiteOpenHelper的子類,至少需要實現三個方法。

 a、建構函式,呼叫父類的SQLiteOpenHelper的建構函式。這個方法需要四個引數:上下文環境(例如,一個Activity),資料庫名稱,一個可選的遊標工程(通常為null),一個代表正在使用的資料庫模型版本的整數。

 b、onCreate()方法,它需要一個SQLiteDatabase物件作為引數,根據需要對這個物件填充表和初始化資料。

 c、onUpgrage()方法,它需要三個引數,一個SQLiteDatabase,一箇舊的版本號和一個新的版本號,這樣就可以清楚如何將一個數據庫從舊的模型轉變到新的模型。

3、如果要從資料庫執行寫入和讀取的操作,就要別調用getWriteableDatabase()和getReadableDatabase(),兩個都會返回一個表示資料庫的SQLiteDatabase物件,並提供用於SQLite操作的方法。

4、當完成了對資料庫的操作(加入Activity已經關閉),需要呼叫SQLiteDatabase的close()方法來釋放掉資料庫連線。為了創 建表和索引,需要呼叫SQLiteDatabase的execSQL()方法來執行DDL語句。如果沒有異常,這個方法沒有返回值。SQLite會自動為主鍵列建立索引。在這種情況下,第一次建立資料庫時建立了表和索引。可以使用execSQL()方法執行INSERT、UPDATE、DELETE等語句來更新表的資料,還可以使用SQLiteDatabase物件的insert()、update()和delete()方法。

5、在update()方法中有四個引數,分別是表名,表示列名和值的ContentValues物件,可選的WHERE條件和可選的填充WHERE語句的字串,這些字串會替換WHERE條件中的”?”標記。

二、具體使用程式碼看使用到的方法

1、對SQLiteOpenHelper的實現

public class SQDBLiteHelper extends SQLiteOpenHelper {

    private static final String DATABASE_NAME="test.db";
    private static final int DATABASE_VERSION = 1;

    public SQDBLiteHelper(Context context){
        super(context,DATABASE_NAME,null,DATABASE_VERSION);
    }
    //資料庫第一次被建立時就會被onCreate呼叫
    @Override
    public void onCreate(SQLiteDatabase db) {
    }

    //資料庫升級
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
    //資料庫降級  
    @Override
    public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
}

2、進行在資料庫中讀取資料

 Cursor c = db.rawQuery("SELECT * FROM person",null);
 while (c.moveToNext()){
   ...   
 }
 c.close();

3、插入資料

db.insert("person",null,values);

4、刪除資料

db.delete("person", "age >= ?", new String[]{String.valueOf(person.age)});

5、修改資料

ContentValues cv = new ContentValues();
        cv.put("age",person.age);
        db.update("person", cv, "name = ?", new String[]{person.name});

以上 幾點對於資料的增刪改查。

三、這裡就是程式碼例項

1、在demo中有SQLite資料儲存,Sharedprferences資料的儲存,等。