所以我相信我有一个非常简单的问题,但似乎找不到任何答案。
我正在尝试更新SQlite中单列的单行,但是使用现在的功能,我似乎为每一行更新了列:
public void updateCompletedSessions(int i, User u) {
ContentValues cv = new ContentValues();
cv.put(ScheduleDbHelper.COLUMN_COMPLETION, i);
SQLiteDatabase database = this.getWritableDatabase();
database.update(TABLE_NAME, cv, "Username="+"Username", null);
}
我有一个User作为自变量,可以检查该用户的名称,因此Username列当然都具有唯一值,但是在哪里进行检查?我在想这与update()方法的最后一个参数有关吗?
答案 0 :(得分:0)
您的情况:
"Username="+"Username"
等效于:
"Username=Username"
始终为TRUE,这就是为什么要更新表的所有行的原因。
您方法的updateCompletedSessions()
第二个参数是u
,它是User
类型的对象,并且我假设有一个为类User
定义的方法,例如getName()
或类似的东西类似。
如果是这种情况,请像这样使用它:
database.update(TABLE_NAME, cv, "Username=?", new String[] {u.getName()});
始终使用占位符?
并将其值传递到update()
的第4个实数中,而不是连接参数。