如何在Java中的SQlite中更新特定列中的特定行?

时间:2019-12-17 19:25:13

标签: java android sqlite android-sqlite

所以我相信我有一个非常简单的问题,但似乎找不到任何答案。

我正在尝试更新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()方法的最后一个参数有关吗?

1 个答案:

答案 0 :(得分:0)

您的情况:

"Username="+"Username"

等效于:

"Username=Username"

始终为TRUE,这就是为什么要更新表的所有行的原因。 您方法的updateCompletedSessions()第二个参数是u,它是User类型的对象,并且我假设有一个为类User定义的方法,例如getName()或类似的东西类似。
如果是这种情况,请像这样使用它:

database.update(TABLE_NAME, cv, "Username=?", new String[] {u.getName()});

始终使用占位符?并将其值传递到update()的第4个实数中,而不是连接参数。