0
我有一個活動,我想創建一個數據庫,並輸入數據,如果以前沒有數據庫存在。否則,我想更新之前輸入的值。SQLite數據庫沒有更新
我試圖通過實現'if-else'來做到這一點。
下面是兩種可能性之間進行選擇的代碼:
public void submitusername(View view) {
userdatabase name = new userdatabase(this);
name.open();
String user = name.getusername();
name.close();
EditText cinone = (EditText) findViewById(R.id.username);
username = cinone.getText().toString();
if(user == null){
userdatabase entry = new userdatabase(Editprofile.this);
entry.open();
entry.createEntry(username, null, null, null);
entry.close();
Context context = getApplicationContext();
CharSequence text = "Added new user!";
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
} else {
userdatabase update = new userdatabase(Editprofile.this);
update.open();
update.updateUsername(username);
update.close();
Context context = getApplicationContext();
CharSequence text = "Username updated!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
下面是其中要求來自數據庫的「用戶名」的方法:
public String getusername() {
String[] columns = new String[]{USER_NAME};
Cursor c = userDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
String result = "";
int iName = c.getColumnIndex(USER_NAME);
for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
result = result + c.getString(iName);
}
return result;
}
方法用於更新用戶名:
public void updateUsername(String name) {
ContentValues cvUpdate = new ContentValues();
cvUpdate.put(USER_NAME, name);
userDatabase.update(DATABASE_TABLE, cvUpdate, KEY_ROWID + "=" + 0 , null);
}
我遇到的問題是 當我運行程序和數據庫不存在(沒有用戶名),點擊按鈕我仍然得到吐司「用戶名更新」,並沒有數據插入。當它顯然應該創建數據庫時,首次插入用戶名並顯示「添加新用戶!另外,如果我刪除'if-else'條件,則不檢查現有數據,只保留「createEntry」部分一切正常;數據被正確插入。所以,這意味着我的「createEntry」部分是正確的。
可能是什麼問題?我在其他活動中實現了getusername(),並且它工作正常。改變你的代碼後
好吧!它正在工作! 但是一旦再次輸入用戶名,它不會更新數據庫。雖然,它顯示敬酒「用戶名更新!」 有什麼問題updateUsername()? –
@K_K:看我的編輯答案也許有幫助。你的代碼是正確的只需要一些驗證 –
沒關係!它是updateUsername()方法。將「KEY_ROWID +」=「+ 0」更改爲「KEY_ROWID +」=「+ 1」 非常感謝您的幫助! –