У меня есть база данных с тремя столбцами. Я хотел бы запросить базу данных на основе одного столбца, который может иметь несколько значений.Android Sql. Query single coloumn, несколько значений
Для одного параметра мы можем нормальный метод запроса, где cardName является String []
Cursor cursor = database.query(Database.TABLE_COUPON_CARD, allColumns,Database.COLUMN_CARD_NAME + " = ?", cardName, null, null,null);
но если есть больше чем одно значение, я получаю Android SQLite cannot bind argument exception
Для нескольких значений одного и того же столбца мы можем использовать IN statement
но, вот как я пишу QUERY
или как я должен сформировать rawQuery
String whereClause = Database.COLUMN_CARD_NAME+ " IN(?)";
Cursor cursor = database.query(Database.TABLE_COUPON_CARD, allColumns,whereClause,new String[][]{cardName}, null, null,null);
Android QUERY не принимает массив массива. Каким должен быть правильный запрос?
ВРЕМЕННОЕ РЕШЕНИЕ В настоящее время я создал метод, который динамически создает предложение.
private static StringBuilder buildInClause(String[] myStringArray){
StringBuilder fullString=new StringBuilder();
fullString.append("(");
for(int i=0;i<myStringArray.length;i++){
fullString.append(" '"+myStringArray[i]+"' ");
if(i!=myStringArray.length-1){
fullString.append(",");
}
}
fullString.append(")");
return fullString;
}
Если у кого-либо есть другие решения, пожалуйста, разделите.
В этом разделе необходимо будет генерировать динамически, основываясь на отсутствии отправляемых значений. в (?) при прохождении одного значения в (?,?) при прохождении двух значений –