在“int delete(String table,String whereClause,String [] whereArgs)”函数中“String [] whereArgs”的目的是什么?

时间:2013-08-18 23:01:41

标签: java android mysql sqlite android-sqlite

String [] whereArgs也出现在SQLiteDatabase类的更新函数中,它描绘的是什么?我已经阅读了文档,但没有得到它,请帮忙。 在此先感谢!!

2 个答案:

答案 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将处理引用字符串,转义任何嵌入的引号等。