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