私はAndroidプロジェクトに取り組んでおり、SQLITEでlikeクエリを実行する必要があります
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 % を一重引用符で囲んでみました。これにより、アプリのクラッシュが停止しますが、正確な文字列を検索すると、次の場合に結果が見つかるという元の問題が発生します。文字列の一部を検索しますが、結果が得られません。