Sqlite升級時向已有表中增長字段

Sqlite升級時向已有表中增長字段

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

3. sqlite官網——Alter Tablecode

相關文章
相關標籤/搜索