0

私は、ユーザーが自分の症状をできるだけ多くチェックできる症状チェッカー Android アプリケーションに取り組んでいます。私がこれまでに試したことを確認してください:

   public String getData(String[] symptoms) {
    String search = "";
    Cursor c = myDataBase.query(DB_TABLE, new String[] 
            {KEY_CONDITIONS}, KEY_SYMPTOMS + "= ? ", symptoms, null, null, null);

    c.moveToFirst();

    while (c.isAfterLast() == false) {
        search += c.getString(0) + ", ";
        c.moveToNext();
    }

    return search;

}

しかし、いくつの症状が選択されるかわからないため、その where 文字列を動的に生成する必要があります。どうすればこれを達成できますか? あなたからの助けは本当に感謝されます。ありがとう!

4

1 に答える 1

0

秘訣は、配列内の文字列ごとに1つの挿入文字()が必要です。?

1つの解決策は、ループを使用することです。

String where = KEY_SYMPTOMS + " = ?";
String relation = " OR "; /* Maybe " AND "? */

StringBuilder builder = new StringBuilder(where);
for(int i = 1; i < symptoms.length; i++)
    builder.append(relation).append(where);

Cursor c = myDataBase.query(DB_TABLE, new String[] 
        {KEY_CONDITIONS}, builder.toString(), symptoms, null, null, null);

短くても同等のループを作成することもできます。

while (c.moveToNext())
    search += c.getString(0) + ", ";  // A StringBuilder should be faster
于 2013-03-01T17:32:42.430 に答える