我有一個問題 - 我已完成數據庫(SQLite),與更新,我分析結構,看看我是否需要添加新的數據或更改現有位置數據庫中的值。所以我有一個問題 - 是否可以一次替換整行中的值(即,在所有單元格中(即相同的id)列),或者有可能將值替換爲每列。如何替換(更改)單元格數據庫SQLite(Android)中的值?
我希望能爲您提供幫助。
我有一個問題 - 我已完成數據庫(SQLite),與更新,我分析結構,看看我是否需要添加新的數據或更改現有位置數據庫中的值。所以我有一個問題 - 是否可以一次替換整行中的值(即,在所有單元格中(即相同的id)列),或者有可能將值替換爲每列。如何替換(更改)單元格數據庫SQLite(Android)中的值?
我希望能爲您提供幫助。
如果您有要更新的行的id,則可以使用SQLiteDatabase.update()
(docs here)。
正如您在update()
函數中看到的,您可以使用ContentValues
來更新該行,並在函數的whereClause
中提供行ID。在ContentValues
裏面,你可以把列的新值,如您平常在插入做:
ContentValues cv = new ContentValues();
cv.putString("row1Name","value1");
cv.putString("row2Name","value2");
等的更新調用會是這樣的
db.update("table_name", cv, "row_id=?", new String[]{""=rowId);
您可以使用衝突取代您的表創建中的唯一約束。
如果與約束行發生衝突,然後它會被替換,例如: -
create table people (
_id integer primary key autoincrmement,
person_id integer,
name text,
age integer,
unique (person_id) on conflict replace
)
這將完成更換是行,如果你試圖用已經存在的爲person_id插入。
對不起,但字段「row_id =?」應該以這種方式?那是我的查詢應該看起來像? db.update(DBOpenHelper.TABLE_NAME,cv,「row_id =?」,new String [] {idChangeLocation +「」}); –
這是正確的。 '?'是一個變量的佔位符,我們在whereClause –
後面的String [] {}中提供。感謝您的幫助。 ) –