我一直试图在android应用程序的搜索中使用通配符,并且一直出现错误。通配符在SQLite中不工作
我执行使用下面的字符串在我的应用程序搜索:
Cursor c_name = b.query("namedrxns", new String[] { "_id", "name" },
"name LIKE %?%", new String[] { query }, null, null, null);
当我使用name LIKE %?%
或name=%?%
我得到一个“近‘%’:语法错误:,编译时:选择_id,名称FROM namedrxns WHERE name =%?%“错误。
但name LIKE '%?%'
或name='%?%'
我得到,而不是“绑定或列索引超出范围:处理0x40cb70”
可能有人请告诉我,我做错了吗?
谢谢!
如何将通配符添加到传入的变量中,而不是在查询中使用它? – 2010-08-28 23:11:17
完美地工作,谢谢!这对我来说似乎有点愚蠢,但没关系。如果你把它作为答案,我会很高兴打勾你:) – 2010-08-28 23:33:13
虽然听起来很正确。绑定的字符串参数基本上会包含引号和内容,所以您最终可能会得到类似于name =%'David'%这个无效的SQL。我的SQL知识并不完全符合标准,所以在这里完成的工作比我所能说明的要多一点,但是这应该让你知道为什么必须按照OMG小马所描述的来完成。 – 2010-08-29 01:33:17