使用SQLite更新Android中的行的正确语法

时间:2011-06-30 21:10:44

标签: android sqlite syntax

好的,我有两个运行相同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()

1 个答案:

答案 0 :(得分:0)

当您删除问号时,是否将其替换为collectionId

的值

第二种语法意味着SQLite可以为任意数量的rowIdcollectionId的不同值重用查询的相同缓存副本,而不是每次调用时都有完全不同的查询。节省了大量资源。