2015-09-19 2 views
-1

У меня есть функция в моем классе DatabaseHelper (extends SQLiteOpenHelper), которая возвращает строку на основе значения определенного столбца. Фрагмент кода следующим образом:Запуск инструкции OR в SQLiteOpenHelper для того же столбца

Cursor cursor = db.query(TABLE_LOCATIONS, new String[]{}, COLUMN_PROD_ID+"=?", productId, null, null, null); 

Где PRODUCTID является String[], который содержит только 1 значение.

Теперь я хочу повторно использовать ту же функцию для сопоставления двух значений для одного и того же столбца. Что-то вроде:

SELECT * FROM TABLE WHERE COLUMN1 = VALUE1 OR COLUMN1 = VALUE2; 

Как достичь этого в SQLiteOpenHelper. Пожалуйста, несите меня, если это глупый вопрос. Благодарю.

+0

Используя 'rawQuery()', было бы намного проще! –

+0

@ FrankN.Stein даже с 'rawQuery()', потому что строка запроса должна отличаться для разных параметров! – camelCaseCoder

ответ

2

Это не имеет никакого отношения к SQLiteOpenHelper.

Предложение WHERE - это параметр selection; просто измените его следующим образом:

String selection; 
switch (productIdsArray.length) { 
case 1: selection = COLUMN_PROD_ID + " = ?"; 
     break; 
case 2: selection = COLUMN_PROD_ID + " = ? OR " + COLUMN_PROD_ID + " = ?"; 
     break; 
default: // blow up 
} 
db.query(TABLE_LOCATIONS, new String[]{}, 
     selection, productIdsArray, 
     null, null, null); 
+0

Но тогда я не смогу повторно использовать одну и ту же функцию, если передаю массив 'productId' только с 1 значением. – camelCaseCoder

+0

Просто увидел редактирование, вот что я и сделал в конце концов. Прием! – camelCaseCoder