在以下功能中考虑whereArgs
:
mDatabase.update(TABLE_NAME, values, whereClause, whereArgs)
我知道它用于
whereClause
中的“?”,但是我不知道为什么要发明这个whereArgs
而不是将args直接插入whereClause
中。通过将从whereClause
提取到whereArgs
找不到任何方便。任何人都可以举一个很好的例子说明whereArgs
的用处吗?赞赏! 最佳答案
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 '' = '"
,确实会破坏整个表。来自:https://stackoverflow.com/a/18304490/1239966