2012-01-13 93 views
0

编辑< < < < < < < < <不正确的数据被放入数据库使用SQLite

我发现,从下面检索到的用户名是回来为空。有人告诉我为什么?

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] 

其中[正确比分]是输出它应该有

为什么是用户名不被保存,而是用空条代替?

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

回答

1

你有两个INSERT语句,这就是为什么它被保存两次。

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

为什么用户名为空,你没有分配getUserName()到userName(请参阅我的代码)。安全的一面我会在插入数据之前放置System.out,并确保userName真的到达那里。

public void saveHighscore() { 

    scoreSaved = true; 

    userName=getUserName(); 

    DatabaseOpenHelper database = new DatabaseOpenHelper(this); 

    database.addHighscore(userName, numberOfGuesses); 

    database.close(); 

} 
+0

我没有意识到这是userName被选中的地方,这是事实,问题,事实证明它是。我要编辑我的原始问题,以显示用户名的选择,并希望可以解决与人民的帮助 – 2012-01-13 19:10:44

+0

太棒了!我会建议而不是编辑这个,用更新后的代码发布一个新问题,这将是干净的。它是由你决定。 – kosa 2012-01-13 19:14:23

+0

我从来没有使用DialogBox,但您可以尝试的一件事是,在onclickListener中,userName = v.findViewbyId(R.id.userName).getText()。toString(); – kosa 2012-01-13 19:20:13