【问题标题】:How to update multiple columns of a single row in SQLite?如何更新 SQLite 中单行的多个列?
【发布时间】:2019-06-28 14:22:34
【问题描述】:

目前我有一个只有一行的表,我想更新该行的某些列。 插入方法正确执行,而更新返回一个 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;
    }

【问题讨论】:

    标签: java android database sqlite android-sqlite


    【解决方案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 中,并将更新表中的行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-27
      • 1970-01-01
      • 1970-01-01
      • 2014-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多