Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Android更新SQLite中的我的专栏_Android_Sqlite_Android Sqlite - Fatal编程技术网

用Android更新SQLite中的我的专栏

用Android更新SQLite中的我的专栏,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我的activity类中有一个方法,它应该向播放器打印一个随机角色(存储在SQLite数据库中)。我得到了一个成功的信息,但它没有被执行。到目前为止,我的SQLite数据库中只有一条记录,并将在之后添加一个while循环来填充每一行 这是我的活动课: public class StartGame extends AppCompatActivity implements View.OnClickListener { DatabaseHelper myDb; But

我的activity类中有一个方法,它应该向播放器打印一个随机角色(存储在SQLite数据库中)。我得到了一个成功的信息,但它没有被执行。到目前为止,我的SQLite数据库中只有一条记录,并将在之后添加一个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();
                        }
                    }
                }
            );
        }

我做错了什么

您在此行中遇到错误:

db.update(TABLE_NAME, contentValues, "Role =?", new String[] {role});
您正在更新表中的所有行,其中
Role={Role}
列包含
Role
{Role}
。所以很明显这不会有任何效果

您需要有一些类似于
id
的东西,并在where语句中使用这些东西,例如:

db.update(TABLE_NAME, contentValues, "id =?", new String[] {id});

这是否意味着您在数据库中随时存储一个角色,并从随机字符串中更新这个角色?为什么
updateRole()
总是返回true?它应该读取
返回db.update(表名,contentValues,“Role=?”,新字符串[]{Role})>0。@不,我希望所有角色都被扮演,每个玩家都有自己的角色。@Rotwang我的错,我已经改变了,现在它说它不成功。好的,现在试试下面的答案。我需要将这两个参数都改为id吗?它还会更新我的“角色”栏吗?这是怎么回事?谢谢:)除非您输入where条件,否则它将更新您的所有行,因此您需要一些如何告诉它要更新的行,因此除了角色之外,我还将添加一个id。下面是一个如何工作的示例:将角色更新为“酷”,其中id=122。或者换句话说,找到id=122的行并将其角色设置为“cool”。
db.update(TABLE_NAME, contentValues, "id =?", new String[] {id});