String [] whereArgs也出现在SQLiteDatabase类的更新函数中,它描绘的是什么?我已经阅读了文档,但没有得到它,请帮忙。 在此先感谢!!
答案 0 :(得分:9)
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 '' = '"
,这确实会破坏整个表格。
答案 1 :(得分:4)
如果您的whereClause
格式为somecolumn=?
,则whereArgs
中的第一个元素将用于替换?
。这些被称为位置参数。使用位置参数的优点是SQLite将处理引用字符串,转义任何嵌入的引号等。