簡體   English   中英

如何僅在 android 中的 SQLite 中使用按鈕單擊更新狀態

[英]How to update only status on a Button click using in SQLite in android

我正在開發一個 SQLite 數據庫。 我創建了一個表,其架構是:名稱、圖像、已選擇。
消息的初始狀態為 0。
我正在使用數據庫上的setStatus()方法更新按鈕單擊時的狀態。
但狀態不會改變。
我想單擊我的 Button 一次並將狀態設置為 1,然后再次單擊它以將狀態重新設置為 0。

setStatus()函數如下所示:

 public int setStatus(People people) {
    SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    people.setStatus(1);
    values.put(STATUS, people.getStatus());

    return sqLiteDatabase.update(TABLE_PEOPLE, values, ID + "=?",
            new String[]{String.valueOf(people.getId())});

}

我的按鈕點擊事件

 btnBuildNow.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            peopleListSelected = new ArrayList<>();
            for (People people : peopleList) {
                if (people.getStatus()==1) {
                    db.setStatus(people);
                    peopleListSelected.add(people);
                }
            }
            if (peopleListSelected.size() > 0) {
                Intent intent = new Intent(BulidActivity.this, AlertList.class);
                intent.putExtra("arrayList", (Serializable) peopleListSelected);
                startActivity(intent);
            }
        }
    });

您沒有傳遞要更新的行的 id(或者您想更新所有行?),未聲明 ISSELECTED 變量。 我的意思是這一行:

sqldb.update(TABLE_PEOPLE, cv, "id=" + ISSELECTED, null);

我會這樣寫(現在我無法測試)。 我會將選定的 id 傳遞給更新方法的第三個參數(即 where 子句,請參閱文檔: https : //developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html ):

public String setStatus(String selected) {
    SQLiteDatabase sqldb = this.getWritableDatabase();
    ContentValues cv = new ContentValues();
    cv.put("isselected", 1);
    sqldb.update(TABLE_PEOPLE, cv, "id=" + selected, null);
    sqldb.close();
    return "Anything you want";
}

另一種可能的解決方案是直接編寫查詢:

public String setStatus(String selected) {
        SQLiteDatabase sqldb = this.getWritableDatabase();
        sqldb.execSQL("UPDATE TABLE_PEOPLE SET ISSELECTED=1 WHERE id=" + selected);
        sqldb.close();
        return "Anything you want";
    }

編輯:對不起,我忘了告訴修改按鈕點擊事件,其中db.setStatus(); 被稱為:使用db.setStatus(people.getId()); ,或類似的東西(people.id,或代表 people 對象的 id 的東西,如果有的話。如果它沒有 id,你應該以某種方式從數據庫中獲取 id。)

暫無
暫無

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

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