Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 通配符在SQLite中不起作用_Android_Database_Sqlite - Fatal编程技术网

Android 通配符在SQLite中不起作用

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”%:语法错误:,编译

我一直试图在android应用程序的搜索中使用通配符,但总是出错

我正在使用以下字符串对我的应用程序执行搜索:

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