使用SQLite将不正确的数据放入数据库

时间:2012-01-13 18:37:58

标签: android insert null sqliteopenhelper

编辑<<<<<<<<<<<

我发现从下面检索的userName将返回null。有谁告诉我为什么?

public void getUserName() {

    getUserNameDialog = new Dialog(MasterMindGameActivity.this);

    getUserNameDialog.setContentView(R.layout.retrieveusername);
    getUserNameDialog.setTitle("Enter your Name");
    getUserNameDialog.setCancelable(false);

    TextView viewScore = (TextView) getUserNameDialog
            .findViewById(R.id.showScore);

    viewScore.setText("Your score was " + numberOfGuesses);

    final EditText enterName = (EditText) getUserNameDialog
            .findViewById(R.id.userName);
    btnConfirm = (Button) getUserNameDialog
            .findViewById(R.id.confirmUserName);

    btnConfirm.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

            userName = enterName.getText().toString();
            getUserNameDialog.cancel();

        }

    });
    getUserNameDialog.show();

}

显示类似

的内容
Highscore
1: null - [correct score]

如果[正确分数]是它应该具有的输出

为什么没有保存userName,而是使用null重新定义?

编辑1:修复了双重问题 - 现在只是空值

1 个答案:

答案 0 :(得分:1)

你有两个插入语句,这就是它存储两次的原因。

 db.insert(HIGHSCORE_TABLE, null, value);
        long dbcheck = db.insert(HIGHSCORE_TABLE, null, value);

为什么username为null,您没有将getUserName()分配给userName(请参阅下面的代码)。安全方面我会在插入数据之前将System.out置于正确位置,并确保userName真正到达那里。

public void saveHighscore() {

    scoreSaved = true;

    userName=getUserName();

    DatabaseOpenHelper database = new DatabaseOpenHelper(this);

    database.addHighscore(userName, numberOfGuesses);

    database.close();

}