Android 通配符在SQLite中不起作用
我一直试图在android应用程序的搜索中使用通配符,但总是出错 我正在使用以下字符串对我的应用程序执行搜索:Android 通配符在SQLite中不起作用,android,database,sqlite,Android,Database,Sqlite,我一直试图在android应用程序的搜索中使用通配符,但总是出错 我正在使用以下字符串对我的应用程序执行搜索: Cursor c_name = b.query("namedrxns", new String[] { "_id", "name" }, "name LIKE %?%", new String[] { query }, null, null, null); 当我使用name LIKE%?%%或name=%?%%时,我得到一个“near”%:语法错误:,编译
Cursor c_name = b.query("namedrxns", new String[] { "_id", "name" },
"name LIKE %?%", new String[] { query }, null, null, null);
当我使用name LIKE%?%%
或name=%?%%
时,我得到一个“near”%:语法错误:,编译时:选择_id,name FROM namedrxns,其中name=%?%”错误
但是使用名称,如“%”?%%
或名称=“%”?%%
我得到的是“绑定或列索引超出范围:句柄0x40cb70”
有人能告诉我我做错了什么吗
谢谢 以下应该可以工作(但我没有用SQLite测试):
请注意,值中的“%”和“u”仍然用作通配符。将
%
附加到查询
参数
即:
正如Thomas Mueller已经说过的,请注意,值中的
%
和\
仍然作为通配符工作。将通配符添加到传入的变量中,而不是将其包含在查询中如何?非常有效,谢谢!我觉得这有点傻,但没关系。如果你把它作为一个答案,我很乐意给你打勾:)听起来不错。绑定的字符串参数基本上会有引号之类的东西,所以您可能会得到类似name=%'David%的东西,这是无效的SQL。我的SQL知识并不完全符合标准,所以这里的工作比我所说的要多得多,但是这应该让你知道为什么OMG小马需要这么做。完整的值“查询”被漏掉,放在'''之间,所以你的%必须和它在一起,谢谢,使用CONTAT让它在服务器端工作,但在我的安卓设备上无法使用SQLite。这是为我做这件事的正确方法。
"name LIKE '%' || ? || '%'"
Cursor c_name = b.query("namedrxns", new String[] { "_id", "name" },
"name LIKE ?", new String[] { "%"+query+"%" }, null, null, null);