.rawQuery の代わりに .query を使用して SQL データベース要求を書き込もうとしています (誰もがこれに同意しているわけではありませんが、より効率的であると言われています...)。
SQLで書く必要がある場合、おおよそ次のようになります。
select COL_NAME, COL_COMMENTS, KEY_ROW_ID
from TABLE
where COL_CAT1 = myVariable1 or myVariable2 or ... myVariableN
or COL_CAT2 = myVariable1 or myVariable2 or .... myVariableN
or COL_CAT3 = myVariable1 or myVariable2 or.... myVariableN
私はこれを試しました:
public Cursor findNameInTable(int myVariable1, int myVariable2, int myVariableN) {
String where = COL_CAT1 + " = ? OR " + COL_CAT2 + "=?";
String[] whereArgs = new String[] { Integer.toString(myVariable1), Integer.toString(myVariable2), Integer.toString(myVariableN)};
c = myDatabase
.query(DATABASE_TABLE, new String[] { KEY_ROWID, COL_NAME , COL_COMMENTS },
where,
whereArgs, null,
null, null);
return c;
}
これに関する問題は、システムがこれを行っていることです:
select .....
from .....
where COL_CAT1 = myVariable1
or COL_CAT2 = myVariable2
or ???? = myVariableN
そして、各変数を新しい列と比較することを期待しているため、クラッシュしますが、これは私が望むものではありません:列よりも多くの入力変数があります。
それは実際には「=?」です。これは適切ではないようですが、この種のリクエストを記述する方法を見つける方法はありません。ドキュメントのほとんどは、query() ではなく rawQuery() に関するものです。前もって感謝します。