0

「yes」または「no」の値を持つ可能性のある100以上の列を持つテーブルがあります。

ユーザーの要求(チェックボックス値フォーム)に従って選択を実行して、「yes」の値を持つすべての行を抽出したいと思います。したがって、例は次のようになります。

-ユーザーがcheckbox1checkbox4とcheckbox7を選択し、他のすべては選択されていません。

クエリは次のようになります。

テーブルから名前を選択します。ここで、(col1=yesまたはcol4=yesまたはcol7=yes)AND(col2=noおよびcol3=noであり、他のすべての列はnoに設定されています)

これをAndroidクエリに実装する方法は?ちなみに、私が見つけたこの実装はあまりエレガントではありませんが、誰かがその目標を達成するための他の実装を提案してもらえますか?

4

1 に答える 1

0

これが修正されたコードです。いくつかのテストコードが含まれています。

        int numColumns = 10;
        boolean[] answers = new boolean[numColumns];
        String[] colNames = new String[numColumns];
        for(int i = 0; i < colNames.length; i++) {
            answers[i] = Math.random() > 0.5;
            colNames[i] = String.format("Col%d", i);
        }
        //-----------LOGIC STARTS HERE----------------
        // use a loop
        StringBuilder yesColumns = new StringBuilder();
        StringBuilder noColumns = new StringBuilder();
        for(int i = 0; i < answers.length; i++) {
            if(answers[i]) {
                if(yesColumns.length() > 0)
                    yesColumns.append(" OR ");

                yesColumns.append(colNames[i]).append("='yes'");
            }
            else {
                if(noColumns.length() > 0)
                    noColumns.append(" AND ");
                noColumns.append(colNames[i]).append("='no'");
            }
        }

        String yesCondition = yesColumns.toString();
        String noCondition = noColumns.toString();
        String query = String.format("select name from table where (%s) AND (%s)",
                                     yesCondition,
                                     noCondition);
        System.out.println(query);
        // SQLiteDatabase db;
        // Cursor cursor = db.rawQuery(query, null);
于 2012-05-25T11:32:22.923 に答える