私はクエリメソッドを使用していますが、クエリメソッドに複数の選択引数を渡す方法はありません。"query"メソッドで2つ以上の選択引数を渡す方法
私のクエリメソッドは、このSQL文と同じように、結果を返す必要があります:
SELECT _id FROM CONATCT_TAGS WHERE TAG1='tagname' OR TAG2='tagname' OR TAG3='tagname' OR TAG4='tagname' OR TAG5='tagname';
私はクエリメソッドを使用していますが、クエリメソッドに複数の選択引数を渡す方法はありません。"query"メソッドで2つ以上の選択引数を渡す方法
私のクエリメソッドは、このSQL文と同じように、結果を返す必要があります:
SELECT _id FROM CONATCT_TAGS WHERE TAG1='tagname' OR TAG2='tagname' OR TAG3='tagname' OR TAG4='tagname' OR TAG5='tagname';
はそのような何かを試してみてください。..
SQLiteDatabase db = YourDatabaseHelper.getReadableDatabase();
String TABLE = "CONTACT_TAGS";
String[] FIELDS = { "_id" };
String WHERE = "TAG1='tagname' OR TAG2='tagname' OR TAG3='tagname' OR TAG4='tagname' OR TAG5='tagname' ";
// Execute
cursor = db.query(TABLE, FIELDS, WHERE, null, null, null, null);
あなたがCursor.query()メソッドのドキュメントを読む場合は、定義を見つけますselection
の場合:
選択:フィルタ宣言どの行を返すかは、 SQL WHERE句で指定します(WHERE自体は除きます)。 nullを渡すと、指定されたテーブルのすべての行が返されます。 あなたは、Android SQLiteの接続で内蔵の最適化を使用する場合
あなたは、この代わりのような何かができる:
String table = "CONTACT_TAGS";
String[] columns = {"_id"};
String where = "TAG1=? OR TAG2=? OR TAG3=? OR TAG4=? OR TAG5=?";
String[] args = {"tagname", "tagname", "tagname", "tagname", "tagname"};
SQLiteDatabase db = myDatabaseHelper.getReadableDatabase();
Cursor cursor = db.query(table, columns, where, args, null, null, null);
@ raultumのソリューションとの違いは、データベースコネクタが決めさせていることです提出されたデータをどのように解釈するか。これは、セキュリティの観点からは非常に興味深いものです。
あなたはその
文字列strSelection = android.provider.CallLog.Calls.TYPE + "=" + CallLog.Calls.MISSED_TYPE + "OR" + android.provider.CallLog.Calls.TYPE +のようにそれを使用することができます"=" + CallLog.Calls.INCOMING_TYPE;
SQLインジェクションを避けるために 'args'引数を適切に使用しているので、この解決策を使用したいと思っています – philipp
誰もこれまで働いたことがありますか?私がそれを試してみると '?'すべてのフィールドのために私のargsに下塗りの代わりに。 – schwiz