Sqlite數據庫升級時,咱們常常會遇到給已有表中增長字段的操做。通常來講,給已有表中增長字段是數據庫操做中的基操,不必再專門寫篇blog記錄的,可是sqlite對SQL語句支持的不夠完全,比方說此次咱們用到的"ALTER TABLE"命令。官方介紹的第一句以下所示:javascript
SQLite supports a limited subset of ALTER TABLE. The ALTER TABLE command in SQLite allows the user to rename a table or to add a new column to an existing table.
複製代碼
Sqlite支持「ALTER TABLE」的有限子集,在Sqlite中這個命令容許用戶重命名錶、向已有表中添加新列。html
那麼若是咱們想在一行SQL語句中同時添加多個字段,這個是不能直接實現的,具體緣由看末尾的參考連接2. sqlite alter table add MULTIPLE columns in a single statemen therejava
既然不能一次添加多個,那麼咱們一次添加一個總行吧,這裏給出一個實現方式,針對添加多個column的需求,這裏對應的建立多條sql語句,在升級時依次執行:sql
// sqlite 不支持一次增長多列,只能一次增長一列。
val sqlsV2 = arrayOf("alter table ${TABLE_NAME} add column age VARCHAR(255)",
"alter table ${TABLE_NAME} add column gender VARCHAR(255)")
複製代碼
依次執行數組中的sql語句:數據庫
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
Log.e(TAG, "onUpgrade oldVersion:$oldVersion newVersion:$newVersion")
// 1 升級到 2
if (oldVersion < 2) {
Log.e(TAG, "onUpgrade 1~2")
sqlsV2.forEach {
db?.execSQL(it)
}
}
}
複製代碼
參考:數組
1. 菜鳥教程ide
2. sqlite alter table add MULTIPLE columns in a single statemen therespa