首页 > 解决方案 > 我正在尝试在 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();
            }
        }
    });

标签: javaandroidsqlsqliteandroid-studio

解决方案


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

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

应该

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

推荐阅读