我的活动类中有一个方法,它应该向播放器打印一个随机角色(存储在SQLite数据库中)。我收到了成功的消息但是没有执行。到目前为止,我的SQLite数据库中只有1条记录,并且在填充每一行之后将添加一个while循环。
这是我的活动课程:
public class StartGame extends AppCompatActivity implements View.OnClickListener {
DatabaseHelper myDb;
Button btnRoles;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_startgame);
myDb = new DatabaseHelper(this);
btnRoles = (Button) findViewById(R.id.btnAssignRoles);
assignRoles();
}
public String RandomNumber() {
List < String > roles = Arrays.asList("Mafia", "Mafia", "Angel", "Detective", "Civilian", "Civilian", "Civilian");
Collections.shuffle(roles);
return roles.get(0);
}
public void assignRoles() {
btnRoles.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
{
boolean isUpdated = myDb.updateRole(RandomNumber().toString());
if (isUpdated == true)
Toast.makeText(StartGame.this, "Roles assigned, keep them secret!", Toast.LENGTH_LONG).show();
else
Toast.makeText(StartGame.this, "UNSUCCESSFUL!", Toast.LENGTH_LONG).show();
}
}
}
);
}
这是我的Database Helper类中的方法:
public boolean updateRole(String role){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_ROLE, role);
db.update(TABLE_NAME, contentValues, "Role =?", new String[] {role});
return true;
}
我做错了什么?
答案 0 :(得分:0)
您在此行中收到错误:
db.update(TABLE_NAME, contentValues, "Role =?", new String[] {role});
您正在更新表格中Role = {role}
的所有行,以使列Role
具有值{role}
。显然这没有效果。
你需要有一些像id
这样的东西,并在你的where语句中使用它,有点像这样:
db.update(TABLE_NAME, contentValues, "id =?", new String[] {id});