在以下功能中考虑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

07-26 08:41