Android SQLite - 使用whereArgs的逻辑是什么

时间:2014-07-07 08:58:36

标签: java android sqlite

在以下函数中考虑whereArgs

mDatabase.update(TABLE_NAME, values, whereClause, whereArgs)

我知道它用于whereClause中的"?" s,但我不知道为什么要发明这个whereArgs而不是将args插入whereClause直接通过从whereClausewhereArgs提取"?"来找不到任何便利。任何人都可以举出一个很好的例子,说明whereArgs有用吗?欣赏它!

1 个答案:

答案 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 '' = '",这确实会破坏整个表格。

来自:https://stackoverflow.com/a/18304490/1239966