通配符不在SQLite中工作

时间:2010-08-28 23:07:36

标签: 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=%?%时,我得到一个“近”%“:语法错误:,编译时:SELECT _id,名称FROM namedrxns WHERE name =%?%”error。

但是name LIKE '%?%'name='%?%'我改为“绑定或列索引超出范围:handle 0x40cb70”

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

谢谢!

2 个答案:

答案 0 :(得分:25)

%附加到query参数。

即:

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

就像托马斯·穆勒已经说过的那样,请注意,值中的%_仍可用作通配符。

答案 1 :(得分:5)

以下内容应该有效(但我没有用SQLite测试):

"name LIKE '%' || ? || '%'"

请注意,值中的“%”和“_”仍可用作通配符。