2018年1月5日 星期五

Android-SQLite 使用 SQLiteOpenHelper (二)_說明

更新日期:20180105

上一篇我們有先規劃我們想要產出的表格
那此篇就開始 簡易教學吧

1 . 首先,繼承 SQLiteOpenHelper
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MyDatabaseHandler extends SQLiteOpenHelper {
    // 必要
    public MyDatabaseHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // 如果資料庫不存在
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
       // 資料庫有任何參數異動
    }
}


2 . SQLiteOpenHelper 須提供的參數









name : DataBase 的名稱。
factory : 若無使用到指標,則預設為 null。
version : 如果版號與先前不同,則會觸發 onUpgrade。

3 . 將上一篇我們所需要的參數提出,並將建構子更改成我們需要的
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "counterManager";

public MyDatabaseHandler(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

4 . 建立我們所需要的 資料表( Table )
備註: Table如果需多個 Table 也在此建立
private static final String TABLE_CONTACTS = "counter";
private static final String KEY_ID = "id";
private static final String KEY_DATE = "count_date";
private static final String KEY_NUMBER = "count_number";
private static final String KEY_NOTE = "count_note";

@Override
public void onCreate(SQLiteDatabase db) {
    // 依照各自需求建立對應的資料表
    // 建立資料庫
    String createDB = "create table " + TABLE_CONTACTS + "(" +
            KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
            KEY_DATE + " DATE UNIQUE NOT NULL," +
            KEY_NUMBER + " int," +
            KEY_NOTE + " char(255)" +
            ");";
    db.execSQL(createDB);
}

5 . 處理版本升級問題
private static final String TABLE_CONTACTS = "counter";

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // 如果資料庫有更新,則移除存在的
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);
    onCreate(db);
}


先記錄問題
1 . onUpgrade 觸發的實際時機



沒有留言:

張貼留言