【问题标题】:I am trying to update score of the player in sql lite database in android but its not happening我正在尝试在 android 的 sql lite 数据库中更新播放器的分数,但它没有发生
【发布时间】:2021-09-21 04:14:23
【问题描述】:

这是 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();
            }
        }
    });

【问题讨论】:

    标签: java android sql sqlite android-studio


    【解决方案1】:

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

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

    应该是

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

    【讨论】:

    • 感谢您解决我的问题
    猜你喜欢
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    相关资源
    最近更新 更多