使用Android在SQLite中更新我的专栏

时间:2017-01-20 18:29:28

标签: android sqlite android-sqlite

我的活动类中有一个方法,它应该向播放器打印一个随机角色(存储在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;
}

我做错了什么?

1 个答案:

答案 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});