2015-05-17 2 views
0

У меня есть база данных с тремя столбцами. Я хотел бы запросить базу данных на основе одного столбца, который может иметь несколько значений.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; 

} 

Если у кого-либо есть другие решения, пожалуйста, разделите.

ответ

1

Для двух значений: IN(?,?). Для трех значений: IN(?,?,?). Получите идею? Каждый ? соответствует одному литералу в массиве аргументов выбора.

+0

В этом разделе необходимо будет генерировать динамически, основываясь на отсутствии отправляемых значений. в (?) при прохождении одного значения в (?,?) при прохождении двух значений –

Смежные вопросы