如何在SQLite中更新一行的多列?

时间:2019-06-28 14:22:34

标签: android database android-sqlite

我现在有一张只有一行的表,我想更新该行的某些列。 正确执行insert方法,而update返回id = 0,并且打印用户名始终是前一个,并且不会更新。

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table "+TABLE_NAME1+" (ID INTEGER PRIMARY KEY AUTOINCREMENT, USERNAME TEXT, WON INT, DRAW INT, LOST INT, CELLSNUMBER INT,RESULT INT)");        
}
public boolean addUserInformation(String name, int w, int l, int d, boolean firstTime){
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();

        values.put(USERNAME, name);
        values.put(WIN, w);
        values.put(LOST, l);
        values.put(DRAW, d);

        long id = 0;
        if(firstTime == true ) {
            id = db.insert(TABLE_NAME1, null, values);
        }
        if(firstTime == false){
            id=db.update(TABLE_NAME1, values, "USERNAME = ? and WON = ? and DRAW = ?  and LOST = ?",new String[] {
                    name,
                    String.valueOf(w),
                    String.valueOf(d),
                    String.valueOf(l)
            });
        }
        if(id == -1)
            return false;
        else
            return true;
    }

1 个答案:

答案 0 :(得分:1)

我猜您想用USERNAME = name用值w, d, l更新行。
update()方法的3d参数是WHERE子句,在其中应该只有:

USERNAME = ?

这样做吧:

id = db.update(TABLE_NAME1, values, "USERNAME = ?", new String[] {name});

w, d, l不必在WHERE子句中。它们保存在变量values中,并将更新表中的行。