在以下函数中考虑whereArgs
:
mDatabase.update(TABLE_NAME, values, whereClause, whereArgs)
我知道它用于whereClause
中的"?" s,但我不知道为什么要发明这个whereArgs
而不是将args插入whereClause
直接通过从whereClause
到whereArgs
提取"?"来找不到任何便利。任何人都可以举出一个很好的例子,说明whereArgs
有用吗?欣赏它!
答案 0 :(得分:1)
As the documentation says,它用于查询字符串中的?
标记。例如,您可以使用:
SQLiteDatabase.delete("users", "user_name = ?", new String[] {"Talib"});
使用参数标记对于避免SQL injection非常重要。例如,
SQLiteDatabase.delete("users", "user_name = ?", new String[] {"' OR '' = '"});
不会删除表格的所有行,但如果你天真地删除了
SQLiteDatabase.delete("users", "user_name = '" + userName + "'");
且userName
设置为"' OR '' = '"
,这确实会破坏整个表格。