我现在有一张只有一行的表,我想更新该行的某些列。 正确执行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;
}
答案 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
中,并将更新表中的行。