通配符不在SQLite中工作

Ale*_*ran 8 database sqlite android

我一直试图在Android应用程序的搜索中使用通配符,并继续遇到错误.

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

Cursor c_name = b.query("namedrxns", new String[] { "_id", "name" },
              "name LIKE %?%", new String[] { query }, null, null, null);
Run Code Online (Sandbox Code Playgroud)

当我使用name LIKE %?%name=%?%得到"近"%":语法错误:,编译时:SELECT _id,名称FROM namedrxns WHERE name =%?%"错误.

但是,name LIKE '%?%'或者name='%?%'我得到"绑定或列索引超出范围:句柄0x40cb70"

有人可以告诉我我做错了什么吗?

谢谢!

whl*_*hlk 26

附加%query参数.

IE:

Cursor c_name = b.query("namedrxns", new String[] { "_id", "name" },
          "name LIKE ?", new String[] { "%"+query+"%" }, null, null, null);
Run Code Online (Sandbox Code Playgroud)

就像托马斯·穆勒已经说过的那样,请注意%并且_价值仍然可以作为通配符使用.


Tho*_*ler 5

以下应该可以工作(但我没有用SQLite测试它):

"name LIKE '%' || ? || '%'"
Run Code Online (Sandbox Code Playgroud)

请注意,值中的"%"和"_"仍然可用作通配符.