Android SQLITE不会使用参数执行查询

时间:2017-04-06 11:05:58

标签: android sql sqlite select sql-like

我通过参数查询失败,我做错了什么?

我需要以下查询:

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);

感谢您的帮助

3 个答案:

答案 0 :(得分:0)

正如迈克在你的评论中所说的那样 49

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

50 - 1其中第二个参数为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 );

答案 1 :(得分:-1)

请尝试此操作,列出名称为foo的用户。

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

OR

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

SQLiteDatabase rawQuery document reference

答案 2 :(得分:-2)

试试这个

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