我正在尝试在 android 的 sql lite 数据库中更新播放器的分数,但它没有发生
Posted
技术标签:
【中文标题】我正在尝试在 android 的 sql lite 数据库中更新播放器的分数,但它没有发生【英文标题】:I am trying to update score of the player in sql lite database in android but its not happening 【发布时间】: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();
);
【问题讨论】:
【参考方案1】:在您的 db.update()
中,您引用的是值而不是列名
long result = db.update( "scores",contentValues, username + " = ?", new String[]
username);
应该是
long result = db.update( "scores",contentValues, "username = ?", new String[]
username);
【讨论】:
感谢您解决我的问题以上是关于我正在尝试在 android 的 sql lite 数据库中更新播放器的分数,但它没有发生的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SQL-lite 数据库检索到 android studio 中的单选按钮组
Android Tensorflow Lite C++ .SO 库未在运行时链接
将图像存储在 android 中的 SD 卡或 SQL lite DB 中的最佳做法是啥?