2017-04-06 60 views
-1

我失败了参数查询,我在做什么错?Android SQLITE不执行具有参数的查询

我需要下面的查询:

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

感谢您的帮助

+4

看起来好像要使用'LIKE'代替'='。 –

回答

-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

试试这个

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

除了推动某人使用参数化查询并进入SQL注入领域([强制XKCD链接](https://xkcd.com/327/)),它仍然使用'='而不是'like'(除非OP真的有'%Fred%'字段)。 – TripeHound

+0

谢谢,但它不起作用。 – user3139428

0

麦克在您的意见 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等中记载here