資源簡介
Android數據存取之Databases
在Android平臺上可以操作數據庫,這是第一次接觸Android時的驚艷之一。在Android平臺上,綁定了SQLite數據庫,這個數據庫系統也是極具性格的,它的最大的應用場景是嵌入式系統,進一步了解可以參看這里。
如果有JDBC的經驗,那么在這里會容易的多。Android中操作數據庫首先要通過一個 類:android.database.sqlite.SQLiteOpenHelper。它封裝了如何打開一個數據庫,其中當然也包含如果數據庫不存在 就創建這樣的邏輯。看一個例子:
view plaincopy to clipboardprint?
1. pubilc class DatabaseHelper extends SQLiteOpenHelper {
2. private static final String DATABASE_NAME = "com.roiding.simple.note";
3. private static final int DATABASE_VERSION = 1;
4. private static final String NOTES_TABLE_NAME = "notes";
5.
6. DatabaseHelper(Context context) {
7. super(context, DATABASE_NAME, null, DATABASE_VERSION);
8. }
9.
10. @Override
11. public void onCreate(SQLiteDatabase db) {
12. db.execSQL("CREATE TABLE " + NOTES_TABLE_NAME
13. + " (id integer primary key autoincrement, name text);");
14. }
15.
16. @Override
17. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
18. db.execSQL("DROP TABLE IF EXISTS notes");
19. onCreate(db);
20. }
21. }
這里面,如下的語句需要解釋:
? super(context, DATABASE_NAME, null, DATABASE_VERSION)
數據庫連接的初始化,中間的那個null,是一個CursorFactory參數,沒有仔細研究這個參數,暫時置空吧。
? public void onCreate(SQLiteDatabase db)
這里面的onCreate是指數據庫onCreate時,而不是DatabaseHelper的onCreate。也就是說,如果已經指定 database已經存在,那么在重新運行程序的時候,就不會執行這個方法了。要不然,豈不是每次重新啟動程序都要重新創建一次數據庫了!在這個方法中,完成了數據庫的創建工作。也就是那個execSQL()方法。
? public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
在程序的開發維護過程中,數據庫的結構可能會有變化,那么這個方法就有用處了。在DatabaseHelper這個對象一創建時,就已經把參數 DATABASE_VERSION傳入,這樣,如果Android發現此版本與現有版本不一致,就會調用這個onUpgrate方法。于是,可以在這里面實現一些數據的upgrade工作,比如說創建一個臨時表,將數據由臨時表中轉到新的表結構中。需要注意的是,這里面的onUpgrade是在版本不一致時調用,也就是說不管當前需要的版本高于現有版本還是低于現有版本,都會出發這個方法,類似的這種情況,就需要對oldVersion和 newVersion進行判斷之后再決定使用什么策略來更新數據。
在Android中,數據庫存放在 /data/data/PACKAGE_NAME/databases 目錄下。
接下來就可以使用這個Helper來操作數據庫了,操作數據庫也就無非是增、刪、改、查。先看一個增的例子:
view plaincopy to clipboardprint?
1. public static void insert(Context context, String s) {
2. DatabaseHelper
代碼片段和文件信息
評論
共有 條評論