2012-04-09 43 views
1

私はいくつかの列を持つデータベーステーブルを持っています。私は、ユーザーが入力した文字列を比較し、そのエントリーに基づいてレコードを選択して、特定の行を選択したいとします。しかし、それだけで見つけ、Androidの選択ステートメントSQLite

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); 
    } 
}); 
} 

IngredientHelper.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 + "'"; 
このコードは、現在動作します

に関してれ

SearchbyIngredient.Java:私は、次のコードを持っていますCOLUMN_INGRED1にユーザーのテキストを含むエントリ(コード内の1つの列のみ)。ステートメントをフォーマットしたり、一連のステートメントを作成して、COLUMN_INGRED2、COLUMN_INGRED3、およびCOLUMN_INGRED4のユーザーのテキストも検索するにはどうすればよいですか?

+0

追加のコメント:おそらくベストプラクティスではない、「getDrinks」にカーソルを戻しています。一般的には、カーソルリソースを作成する場所を管理する必要があります。そのため、 'getDrinks'では結果を' String'や 'String []'に抽出してカーソルをすぐに閉じる方が安全です。さもなければ 'SearchByIngredient'のカーソルを閉じることを忘れないでください – CjS

答えて

2

標準SQLを適用ありがとう、ORを使用します。=は完全一致を行いますことを

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

注意を、あなたはLIKEオペレータに見たいと思うかもしれません。

+0

ありがとう、私はORが引用符でなければならないということを知らなかった。私はこれに新しいです。 LIKEの提案をありがとうございます。私はこれのためのオートコンプリート機能を持っていますが、あなたがそれを使用しない、または正確にタイプすると、プログラムがクラッシュします。私はそれを使用します。 – cycokris

+0

**咳*受け入れる*咳**:P – dmon

関連する問題