//建立資料表
CREATE TABLE myTable()
表格名稱後的括號內,要定義該表格的資料欄位,每個資料表可擁有數個欄位,SQLite資料庫的資料型態有下列三種:
//定義資料欄位語法,前者為欄位名稱;後者為資料型態
TITLE INTEGER
//若增加NOT NULL則表示該欄位不允許空值
TITLE INTEGER NOT NULL
//主鍵
TITLE TEXT PRIMARY KEY
//綜合上述語法,建立一個名為myTable的資料表,內有book與price兩個值,分別儲存文字與數字,其中book為主鍵,而price不為空
CREATE TABLE myTable(book TEXT PRIMARY KEY, price INTEGER NOT NULL)
寫在MyDBHelper的onCreate()中,使用execSQL()將以上SQL語法作為字串傳入,讓DB產生table
override fun onCreate(db: SQLiteDatabase) {
//這裡寫要加入建立資料表的SQL語法
db.execSQL("CREATE TABLE myTable(book TEXT PRIMARY KEY, price INTEGER NOT NULL)")
}
onCreate()只有在第一次建立資料庫時執行,如果希望更新資料表欄位,則需進行資料庫遷移(Migration),遷移有三步驟,如下所述:
將資料庫版本升級
//升級資料庫版本
private const val v = 2
在onUpgrade()執行以下語法
override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
//當表已存在將其刪除
db.execSQL("DROP TABLE IF EXISTS myTable")
}
重新呼叫onCreate()建立新的資料表
override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
//當表已存在將其刪除
db.execSQL("DROP TABLE IF EXISTS myTable")
//刪除資料表後重新呼叫onCreate()方法建立新的資料表
onCreate(db)
}