1

いくつかの列を持つデータベース テーブルがあります。ユーザーが入力した文字列を比較して特定の行を選択し、そのエントリに基づいてレコードを選択したいと考えています。次のコードがあります。

SearchbyIngredient.Java

    final Button searchbutton1 = (Button) findViewById(R.id.searchbutton1);
searchbutton1.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
Cursor temp = dbIngredientHelper.getDrinks(textView.getText().toString());
        String ingred = temp.getString(0);
        Context context = getApplicationContext();
        iadapter = new IngredientAdapter(temp);
        myListView.setAdapter(iadapter);
    }
});
}

成分ヘルパー.Java

public Cursor getDrinks(String drinkName) throws SQLException{
    SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
    queryBuilder.setTables(TABLE_NAME2);
    String selection = COLUMN_INGRED1 + "= ' " + drinkName + "'";
    String[] asColumnsToReturn = new String[] { COLUMN_ID2, COLUMN_DRINKNAME, COLUMN_INGRED1, COLUMN_AMT1, COLUMN_INGRED2, COLUMN_AMT2, COLUMN_INGRED3, COLUMN_AMT3, COLUMN_INGRED4, COLUMN_AMT4 };
    Cursor mCursor2 = queryBuilder.query(dbSqlite, asColumnsToReturn, selection, null, null, null, COLUMN_DRINKNAME);
    /*Cursor mCursor = dbSqlite.query(true, TABLE_NAME2, new String[]{
            COLUMN_DRINKNAME}, 
            COLUMN_INGRED1 + "= ' " + drinkName + "'", null, null, null, null, null);
    if (mCursor != null){
        mCursor.moveToFirst();
    }*/
    mCursor2.moveToFirst();
    return mCursor2;
}

私の質問は

String selection = COLUMN_INGRED1 + "= ' " + drinkName + "'";

このコードは現在動作しますが、COLUMN_INGRED1 内のユーザーのテキストを含むエントリのみを検索します (コード内の 1 つの列のみ)。COLUMN_INGRED2、COLUMN_INGRED3、および COLUMN_INGRED4 でユーザーのテキストも検索するように、ステートメントをフォーマットするか、一連のステートメントを作成するにはどうすればよいですか? ありがとうございました

4

1 に答える 1

2

標準 SQL が適用されます。OR を使用します。

   COLUMN_INGRED1 + "= ' " + drinkName + "' OR " COLUMN_INGRED2 + "= '" +drinkName + "'" ...;

=完全一致を行うことに注意してください。LIKE演算子を調べることをお勧めします。

于 2012-04-10T00:05:06.683 に答える