1

私は Android 検索ダイアログを動作させましたが、私が抱えている問題は、3 列すべてを検索したい 3 列の DB テーブルがあることです。以下のメソッドは、テーブルの列 1 でのみ検索を実行します。

//--- GET RECORDS FOR SEARCH
public Cursor searchDB(String query) {
    String[] allColumns = new String[]{ KEY_COLUMN1, KEY_COLUMN2, KEY_COLUMN3 };
    return db.query(true, DB_TABLE, new String[] { KEY_ROWID,
            KEY_COLUMN1, KEY_COLUMN2, KEY_COLUMN3 }, KEY_COLUMN1 + " LIKE" + "'%"   + query + "%'", null, null, null, null, null);
}
//--- END Get Records for Search

そこで、次のようにクエリに文字列配列を追加してみました。

//--- GET RECORDS FOR SEARCH
public Cursor searchDB(String query) {
    String[] allColumns = new String[]{ KEY_COLUMN1, KEY_COLUMN2, KEY_COLUMN3 };
    return db.query(true, DB_TABLE, new String[] { KEY_ROWID,
            KEY_COLUMN1, KEY_COLUMN2, KEY_COLUMN3 }, allColumns + " LIKE" + "'%"        + query + "%'", null, null, null, null, null);
}
//--- END Get Records for Search 

しかし、それはアプリをクラッシュさせます。では、3 つの列 (Column1、Column2、および Column3) を検索するようにメソッドを変更するにはどうすればよいでしょうか。

4

3 に答える 3

6

これは次のように行うことができます (少なくとも 1 つの列に一致するすべての行が必要であると仮定します)。

public Cursor searchDB(String query) { 
    return db.query(true, DB_TABLE, new String[] { KEY_ROWID, KEY_COLUMN1, KEY_COLUMN2,
    KEY_COLUMN3 }, KEY_COLUMN1 + " LIKE" + "'%" + query + "%' OR " + KEY_COLUMN2 + 
    " LIKE" + "'%" + query + "%' OR " + KEY_COLUMN3 + " LIKE" + "'%" + query + "%'", 
    null, null, null, null, null); 
} 
于 2012-05-31T04:32:28.910 に答える
0

「allColumns」の代わりに「Null」を渡す必要があります。それは行のすべての列を検索します

于 2012-05-30T19:49:09.840 に答える
0
allColumns + " LIKE" + "'%"        + query + "%'"

このようなことを試す必要があると思います

column1 + " LIKE '%' AND "+column2        + " LIKE '%' AND " etc.,

注: 構文エラーがある可能性があります。ハンドタイプです。

于 2012-05-30T19:49:30.270 に答える