我选择了这样的内容:
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: (...)
如何防止选择值中的特殊字符?
答案 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不区分大小写。)