好的,我有两个运行相同API级别的Android项目。一,更新我正在使用的SQLite行:
db.update(DATABASE_TABLE, updateValues, KEY_ROWID + "=" + rowId, null);
在我正在使用的另一个:
db.update(DATABASE_TABLE, updateValues, FIELD_COLLECTION_ID + "=?", new String[] {collectionId});
他们都工作。除了在第二个项目中,如果我更改语法以匹配第一个项目(即从where子句中删除问号并将whereArgs
设置为null),它将返回受影响的0行。是否有一个原因?我想坚持使用第二种语法,因为它显然减少了SQL注入的可能性,但我想我会把它扔到那里,看看是否有人有类似的经历。
同样有趣的是,文档没有指定whereArgs的用途,它就在那里:SQLiteDatabase:update()
答案 0 :(得分:0)
当您删除问号时,是否将其替换为collectionId
?
第二种语法意味着SQLite可以为任意数量的rowId
或collectionId
的不同值重用查询的相同缓存副本,而不是每次调用时都有完全不同的查询。节省了大量资源。