如何在 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;

    }


婷婷同学_
浏览 1664回答 1
1回答

月关宝盒

USERNAME = name我猜您想用 values更新行w, d, l。该方法的 3d 参数update()是WHERE子句,在其中你应该只有:USERNAME = ?所以这样做:id = db.update(TABLE_NAME1, values, "USERNAME = ?", new String[] {name});这些值w, d, l不必在WHERE子句内。它们保存在变量中values并将更新表中的行。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java