2015-01-30 3 views
0

Я хочу, чтобы строка соответствовала любому столбцу 3 столбца, а 4-й столбец должен быть равен некоторой строке в таблице базы данных SQlite. Например, давайте возьмем 3 столбца: first_name, middle_name, last_name либо из этих столбцов, равных = «String», так и 4-й столбец: age = 20. Но ниже повторения запросов «null». Поэтому, пожалуйста, помогите решить проблему.где предложение с использованием OR и AND в sqlite android

Cursor cursor = db.query(TABLE_ONE, new String[] { KEY_FNAME, KEY_MNAME, KEY_LNAME }, KEY_FNAME + "=? OR " + KEY_MNAME + "=? OR " + KEY_LNAME + "=? AND " + KEY_AGE + "=?", 
      new String[] { string , string, string, "20"}, null, null, null, null); 

EDIT: Я также попытался с сырым запроса, но не работает:

String query = "SELECT * FROM table_one WHERE (" + 
      "fname = '"+string1+"' OR mname = '"+string1+"' OR lname = '"+string1+"') AND age ='20'"; 

    Cursor cursor = db.rawQuery(query,null); 
+0

Используется rawQuery для этого .... –

+0

'new String [] {" string "," string "," string "," 20 "}' Вы имели в виду вот так? –

+0

@ RandykaYudhistira да .., что не так? –

ответ

0

Попробуйте обертывание ИЛИ заявления в скобках:

"(" + KEY_FNAME + "=? OR " + KEY_MNAME + "=? OR " + KEY_LNAME + "=?) AND " + KEY_AGE + "=?" 
+0

Нет .. не работает с этим. –

+0

@ Brinda-user1594986 'KEY_AGE' может быть целым числом. Вместо того, чтобы использовать placeholder '?', Поместите точное значение и повторите попытку. Разумеется, также удалите '' 20 "' из массива строк (следующий аргумент). – Simas

+0

Все строки. Если я использую только операции AND, он работает отлично. Но не с OR –

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