-3

String[] whereArgs 也出现在 SQLiteDatabase 类的更新函数中,它描述了什么?我已经阅读了文档,但没有得到它,请帮助。提前致谢 !!

4

2 回答 2

9

正如文档所说,它用于?查询字符串中的标记。例如,您可能会使用这个:

SQLiteDatabase.delete("users", "user_name = ?", new String[] {"Talib"});

参数标记的使用对于避免SQL 注入非常重要。例如,

SQLiteDatabase.delete("users", "user_name = ?", new String[] {"' OR '' = '"});

不会删除表的所有行,但如果你天真地做了

SQLiteDatabase.delete("users", "user_name = '" + userName + "'");

userName设置为"' OR '' = '",那确实会摧毁你的整个桌子。

于 2013-08-18T23:03:44.097 回答
4

如果您的whereClauseis 形式somecolumn=?,第一个元素 out ofwhereArgs将用于替换?. 这些被称为位置参数。使用位置参数的优点是 SQLite 将处理引用字符串、转义任何嵌入的引号等。

于 2013-08-18T23:04:26.317 回答