我试图在android的sql-lite数据库中更新玩家的分数,但并没有发生



这是DBHelper类中的更新函数,它在每个正确答案后将分数更新10。我的插入功能运行良好,但当更新功能触发应用程序更改其活动时,分数没有得到更新

public Boolean updateScore(String username,Integer score)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("username", username);
contentValues.put("score", score);
long result = db.update( "scores",contentValues, username + " = ?", new String[] 
{username});
if (result==-1) return false;
else return true;
}

这是我在检查按钮后面的编码。它检查单词是否正确,然后分数增加10。插入功能工作正常。

check.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
player.start();
if (answer.getText().toString().isEmpty()){
Toast.makeText(easy_level.this,"Enter you guess first", 
Toast.LENGTH_SHORT).show();
}
else if (answer.getText().toString().equalsIgnoreCase(pet)){
Toast.makeText(easy_level.this,"You are correct", Toast.LENGTH_SHORT).show();
answer.setText("");
pet = pets[random.nextInt(pets.length)];
question.setText(mixWords(pet));
count.start();
//insertingScore
if(score_int == 0){
Boolean insert = DB.insertScore(name,10);
score_int +=10;
score.setText(String.valueOf(score_int));
if (insert==true)
{
Toast.makeText(easy_level.this,"added 10",Toast.LENGTH_SHORT).show();
}else
{
Toast.makeText(easy_level.this,"failed",Toast.LENGTH_SHORT).show();
}
}else {
score_int +=10;
score.setText(String.valueOf(score_int));
Boolean update = DB.updateScore(name,score_int);
if (update==true)
{
Toast.makeText(easy_level.this,"updated 
10",Toast.LENGTH_SHORT).show();
}else
{
Toast.makeText(easy_level.this,"update 
fail",Toast.LENGTH_SHORT).show();
}
}

}else {
Toast.makeText(easy_level.this,"You are wrong", Toast.LENGTH_SHORT).show();
}
}
});

db.update()中,您引用的是值,而不是列名

long result = db.update( "scores",contentValues, username + " = ?", new String[] 
{username});

应该是

long result = db.update( "scores",contentValues, "username = ?", new String[] 
{username});

最新更新