簡體   English   中英

SQLite數據庫未更新

[英]SQLite database not updating

我有一個活動,如果以前不存在數據庫,我想在其中創建一個數據庫並向其中輸入數據。 否則,我想更新之前輸入的值。

我正在嘗試通過實現'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);
}

我遇到的問題是,當我運行該程序並且數據庫不存在(沒有用戶名)時,單擊該按鈕,我仍然會看到吐司“ Username Updated”,並且沒有數據插入。 當它明確應該創建數據庫時,第一次插入用戶名並顯示吐司“ Added new user!”。

另外,如果我刪除了'if-else'條件,則不檢查現有數據,而只保留“ createEntry”部分,一切正常。 數據正確插入。 因此,這意味着我的“ createEntry”部分是正確的。

可能是什么問題呢? 我在其他活動中實現了getusername(),並且工作正常。

嘗試將代碼更改為:

   userdatabase name = new userdatabase(Editprofile.this);
    name.open();
    String user = name.getusername();
    name.close();

    EditText cinone = (EditText) findViewById(R.id.username);
            username = cinone.getText().toString();

  if(user.equals("")){

        //your code here
    }

    else {
          //your code here
    }

並將您的getusername()方法更改為:

public String getusername() {                                                               
    String[] columns = new String[]{USER_NAME};
    Cursor c = userDatabase.query(DATABASE_TABLE, 
                                         columns,
                     null,
                     null,
                     null,
                     null,
                     null);

    String result = "";
    c.moveToFirst();
    if(c.getCount()>0){

      int iName = c.getColumnIndex(USER_NAME);

      for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {

        result = result + c.getString(iName);
       }
     }
    return result;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM