2014-11-10 3 views
-1

Эй, есть много ответов на несколько запросов выбора, и я прочитал все, что мог найти. Мой запрос кажется мне правильным, но я могу заставить его работать только с одним выбором. Надеюсь, еще одна пара глаз заметит, чего я не вижу.SQLite множественный выбор запроса ИЛИ

Cursor getSearch(String itemName) { 
    String searchSelect = "("+MediaStore.Audio.Media.TITLE + " LIKE ? OR"+ 
      MediaStore.Audio.Media.ARTIST + " LIKE ? OR"+ 
      MediaStore.Audio.Media.ALBUM + " LIKE ?)"; 
    String[] selectArgs = { "%" + itemName + "%"}; 
    Cursor searchCursor = getContentResolver().query(
      queryUri, 
      projection, 
      searchSelect, 
      selectArgs, 
      MediaStore.Audio.Media.TITLE + " ASC" 
    ); 
    return searchCursor; 
} 
+2

вы пропустили несколько пробелов: 'ИЛИ" ' – njzk2

+1

также, если у вас есть 3' ', вам нужно 3 арг в' selectArgs' (даже если? они одинаковы) – njzk2

+0

@ njzk2 Спасибо, я знал, что это было что-то очевидное. * xx * Хорошо, спасибо за головы, я сделаю это изменение. Это просто лучшая практика, потому что она работает нормально, как есть. – spintron

ответ

0

отсутствует пробел после ИЛИ

Cursor getSearch(String itemName) { 
    String searchSelect = "("+MediaStore.Audio.Media.TITLE + " LIKE ? OR "+ 
      MediaStore.Audio.Media.ARTIST + " LIKE ? OR "+ 
      MediaStore.Audio.Media.ALBUM + " LIKE ?)"; 
    String[] selectArgs = { "%" + itemName + "%","%" + itemName + "%","%" + itemName + "%"}; 
    Cursor searchCursor = getContentResolver().query(
      queryUri, 
      projection, 
      searchSelect, 
      selectArgs, 
      MediaStore.Audio.Media.TITLE + " ASC" 
    ); 
    return searchCursor; 
} 
+0

Я думаю, вам нужно иметь 1 arg для каждого '?', Не так ли? – njzk2

+0

Я не знаю, является ли это лучшей практикой, но это работает по назначению. Если кто-то знает, что это правильный способ сделать это, отредактируйте мой ответ или сообщите мне, и я это сделаю. – spintron

+0

Я очень удивлен, что вы скажете, что он работает только с одним аргументом. Из того, что я помню, вы должны привязать каждый '?' К одному аргументу. – njzk2

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