私はいくつかの列を持つデータベーステーブルを持っています。私は、ユーザーが入力した文字列を比較し、そのエントリーに基づいてレコードを選択して、特定の行を選択したいとします。しかし、それだけで見つけ、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のユーザーのテキストも検索するにはどうすればよいですか?
追加のコメント:おそらくベストプラクティスではない、「getDrinks」にカーソルを戻しています。一般的には、カーソルリソースを作成する場所を管理する必要があります。そのため、 'getDrinks'では結果を' String'や 'String []'に抽出してカーソルをすぐに閉じる方が安全です。さもなければ 'SearchByIngredient'のカーソルを閉じることを忘れないでください – CjS