我有一个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'值不存在。 –