我正在开发 android 项目,我需要在 SQLITE ie 中执行类似的查询
SELECT * FROM table WHERE column LIKE %value%
。
下面是我用来尝试构建查询的代码。
myDB = context.openOrCreateDatabase("PasswordManager", Context.MODE_PRIVATE, null);
String[] columns = new String[]{"*"};
if (searchType == SearchType.App)
{
where = "appName like ?";
}
else if (searchType == SearchType.Username)
{
where = "username like ?";
}
else if (searchType == SearchType.Name)
{
where = "company like ?";
}
String[] args = {"%" + searchTerm + "%"};
cursor = myDB.query("password", columns, where, args, null, null, null);
出于某种原因,如果我尝试搜索模式,这不会返回任何结果,但是如果我搜索整个字符串,它会找到一些东西。例如,如果我有值 Hello World 并执行对 Hello 的搜索,则没有任何返回,如果我执行对 Hello World 的搜索,那么我会得到一个结果。
我不明白为什么这行不通。我尝试%
在搜索词周围添加和删除符号,但没有任何区别。
感谢您的任何帮助,您可以提供。
更新 我已经尝试过 dymmeh 所说的,但这似乎没有奏效。下面是我尝试过的代码。
myDB = context.openOrCreateDatabase("PasswordManager", Context.MODE_PRIVATE, null);
String[] columns = new String[]{"*"};
if (searchType == SearchType.App)
{
where = "appName like %" + searchTerm + "%";
}
else if (searchType == SearchType.Username)
{
where = "username like %" + searchTerm + "%";
}
else if (searchType == SearchType.Name)
{
where = "company like %" + searchTerm + "%";
}
//String[] args = {"%" + searchTerm + "%"};
cursor = myDB.query("password", columns, where, null, null, null, null);
使用上面的代码现在使应用程序崩溃,我尝试将 % searchTerm % 括在单引号中,这会阻止应用程序崩溃,但我遇到的原始问题是,如果我搜索确切的字符串,则会找到结果我搜索字符串的一部分,我没有得到任何结果。