SQLite 添加列時,判斷該列是否存在

一、應用場景

最近在項目中使用了SQLite,由於前期設計表結構不合理,後期需要添加新的字段。

當添加該字段時,需要先判斷該列是否存在。如果不存在,則使用 ALTER 添加該字段。

二、代碼實現

// 不能重複插入
String ADD_COLUMNS_PRINCIPAL = "ALTER TABLE project ADD COLUMN principal TEXT";
String ADD_COLUMNS_PHONE = "ALTER TABLE project ADD COLUMN phone TEXT";
ResultSet resultSetPrincipal =  stmt.executeQuery("select * from sqlite_master where name='project' and sql like '%principal%'");
if (!resultSetPrincipal.next()) { // 結果集爲空
    stmt.execute(ADD_COLUMNS_PRINCIPAL);
}
ResultSet resultSetPhone = stmt.executeQuery("select * from sqlite_master where name='project' and sql like '%phone%'");
if (!resultSetPhone.next()) {
    stmt.execute(ADD_COLUMNS_PHONE);
}

三、原理

(1)判斷某列是否存在

sqlite_masterSQLite 隱藏系統表

select * from sqlite_master where name='表名' and sql like '%列名%';

(2)ResultSet 判斷結果集是否爲空

ResultSet 表示 select 語句 的查詢結果集。
ResultSet 對象具有指向其當前數據行的指針最初,指針被置於第一行記錄之前,通過 next()方法 可以將指針移動到下一行記錄。

next()方法ResultSet對象 沒有一行記錄時返回 false ,因此可以在while循環中使用它來
遍歷結果集,也可以利用 if()方法 判斷結果集是否爲空。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章