使用具有多个值的IN运算符

时间:2013-02-15 20:38:01

标签: android sqlite prepared-statement

我遇到了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运算符,因为阵列疾病是动态的,其大小将根据用户而改变

由于

0 个答案:

没有答案