2

このクエリを実行しようとしたIN演算子に問題があります

public Cursor getFoodToAvoid(String[] diseases){

    String value="";
    for(int i=0; i<diseases.length; i++){
        if(i!=diseases.length-1){
            value = value+diseases[i] +",";
        }else{
            value=value+diseases[i];
        }
    }
    Cursor c =null;
    String[] args={value};
    String sql = "SELECT distinct  "+FoodsTable.FOOD_NAME+", "+FoodsTable.FOOD_ENERGY_CONTENT+
            ","+FoodsTable.FOOD_ID+","+FoodsTable.FOOD_AMOUNT+","+FoodsTable.FOOD_CALORIES+ 
            ","+ FoodsTable.BARCODE+","+FoodsTable.FOOD_CATEGORY+ 

            " FROM "+FoodToAvoidTable.TABLE_NAME + " , " +FoodsTable.TABLE_NAME+
            " WHERE "+FoodToAvoidTable.FOOD_ID_FK+  " = "+FoodsTable.FOOD_ID + " AND " +
            FoodToAvoidTable.DISEASE_ID_FK+ " IN ( ? ) ";
    try{
        c = db.rawQuery(sql, args);
        Log.d(TAG, args[0] +" ");
    }catch(Exception e){
        e.printStackTrace();
    }
    return c;
}

しかし、空のカーソルが表示されます。問題はIN演算子にあることはわかっていますが、解決できません。配列の病気は動的であり、ユーザーによってサイズが変わるため、OR演算子を使用できません

ありがとう

4

0 に答える 0