我有一个问题 - 我已完成数据库(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 [] {}中提供。感谢您的帮助。 ) –