Android SQLITE 不执行带有参数的查询

Android SQLITE does not execute queries with arguments

我无法通过参数查询,我做错了什么?

我需要以下查询:

cursor = bd.rawQuery("SELECT * FROM user WHERE user.name=?", new String[]{"%"+nombre+"%"});

我尝试了以下方法,但都失败了:

cursor = bd.rawQuery("SELECT * FROM user WHERE name=?", new String[]{"%"+nombre+"%"});

cursor = bd.rawQuery("SELECT * FROM user WHERE user.name=?", new String[]{nombre});

这个有效:

cursor = bd.rawQuery("SELECT * FROM user ", null);

感谢您的帮助

试试这个

cursor = bd.rawQuery("SELECT * FROM user WHERE name= '%"+ nombre + "%'", null);

正如迈克在您的评论中所说 cursor = bd.rawQuery("SELECT * FROM user WHERE name LIKE ? ", new String[]{"%" + nombre + "%"});

或者如果你真的想这样使用:

cursor = bd.rawQuery("SELECT * FROM user ", null); 其中第二个参数为空。

改用转义字符串:

cursor = bd.rawQuery("SELECT * FROM user WHERE name LIKE '%" + nombre.replaceAll("'","''") + "%' ", null );

或像 描述的那样使用 GLOB

请试试这个,列出名称为 foo 的用户。

cursor = bd.rawQuery("SELECT * FROM user WHERE name = ?", new String[] {"foo"});

cursor = bd.rawQuery("SELECT * FROM user WHERE name LIKE ?", new String[] {"foo"});

SQLiteDatabase rawQuery document reference