2016-10-27 74 views
0

我有一個BookMarked列的電影sqlite數據庫,其中值1表示電影已被標記爲書籤,而0表示它沒有。所有的默認值是0無法有選擇地更新列值

ID| BookMarked 
--+-------- 
1 | 0 
2 | 0 
3 | 1 <--- movie is BookMarked 

我已經創建了一個方法基於相應ID值來更新個人BookMarked列值

public void bookMark(String ID){ 

    SQLiteDatabase db = getReadableDatabase(); 
    ContentValues newValues = new ContentValues(); 

    String value = "1"; 
    String strFilter = "ID="+ID; 

    newValues.put("BookMarked", value); 

    db.update("Movies", newValues, strFilter, null); 

} 

因此,例如,書籤(1)應該改變上表中

ID| BookMarked 
--+-------- 
1 | 1 <--- movie is BookMarked 
2 | 0 
3 | 1 <--- movie is BookMarked 

問題是我無法選擇性地更改BookMarked中的單個列值,儘管我的語法看起來正確即

我可以改變線

db.update( 「電影」,newValues,strFilter的,NULL);

此通過去除過濾器並設置參數爲空

db.update( 「電影」,newValues,NULL,NULL);

,我得到這個,當我打電話書籤()

ID| BookMarked 
--+-------- 
1 | 1 
2 | 1 
3 | 1 

爲什麼沒有過濾器的工作?

編輯:

我傾倒光標來測試代碼

public void bookMark(String ID) { 

     // Updating the column 

     SQLiteDatabase db = getReadableDatabase(); 
     ContentValues newValues = new ContentValues(); 
     String value = "1"; 
     String strFilter = "ID="+ID; 
     newValues.put("BookMarked", value); 
     db.update("Movies", newValues, strFilter, null); 


     // Dumping the cursor 

     SQLiteQueryBuilder qb = new SQLiteQueryBuilder(); 
     qb.setTables("Movies"); 
     String[] sqlSelect = new String[]{"BookMarked"}; 
     String[] selectionArg = new String[]{value}; 
     Cursor c = qb.query(db, sqlSelect, "BookMarked=?", selectionArg, null, null, null); 
     c.moveToFirst(); 
     Log.v("TAG","Dumping...."); 
     DatabaseUtils.dumpCursor(c); 

     } 
+0

顯然,你的'ID'值不存在。 –

回答

0

如果您嘗試更新數據庫,你需要

SQLiteDatabase db = getWritableDatabase(); 

,所以你可以改變它。

那麼update應該

db.update("Movies", newValues, "ID=?", new String[] { ID }); 
+0

我仍然有同樣的問題。這行'db.update(「Movies」,newValues,null,null);'更新所有值,並且這一行'db.update(「Movies」,newValues,strFilter,null);'更新NO值 –