我有一個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);
}
顯然,你的'ID'值不存在。 –