选择中的特殊字符

时间:2015-03-05 14:09:29

标签: android sql sqlite

我选择了这样的内容:

mSelectionClause = "(lower(" + NAME_COLUMN + ") LIKE \'%" + name.toLowerCase() + "%\'";

但是,当我将名称设置为'"应用程序崩溃:

Caused by: android.database.sqlite.SQLiteException: near ""%' OR upper(display_name) LIKE '%'''''"": syntax error (code 1): , while compiling: (...)

如何防止选择值中的特殊字符?

2 个答案:

答案 0 :(得分:1)

你可以试试这个。 因为这会逃脱你的特殊角色。

name = DatabaseUtils.sqlEscapeString(name);

答案 1 :(得分:0)

要防止SQL命令中出现字符串格式问题,请使用参数:

mSelectionClause = NAME_COLUMN + " LIKE ?";
String[] selectionArgs = new String[] { name };
db.query(table, cols, mSelectionClause, selectionArgs, null, null, null);

(LIKE不区分大小写。)