包含特殊字符的SQLite查询

3

我需要构建SQLite数据库,其中存储了一些包含特殊字符的字符串。在大多数情况下,它都能正常工作,但有一个例外。

SELECT * FROM table1 WHERE use_id = 3B:02

它抛出这些错误

android.database.sqlite.SQLiteException: near ":02": syntax error (code 1):

当“3B:02”是变量时,我该如何处理?

这是我的查询:

selectQuery = "SELECT * FROM " + DataBaseHelper.TABLE_COM + " WHERE "
                + DataBaseHelper.COLUMN_USER_ID + " = " + value;
1个回答

7

在SQL中,字符串字面量的值需要用 '单引号' 括起来。

然而,最好使用 ? 占位符来代替字面量并绑定值,例如:

Cursor c = db.rawQuery("SELECT * FROM " + DataBaseHelper.TABLE_COM + " WHERE "
            + DataBaseHelper.COLUMN_USER_ID + " = ?", new String[] { value });

但是它不需要最低API级别16吗? - user3290805
rawQuery(String,String[])自API级别1就已经存在了。还有另一个重载版本是在16中添加的。 - laalto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接