2015-01-27 3 views
3

Я использую ActiveAndroid как система ORM в моем проекте, и я использую эту строку кода для запроса к базе данных свышенескольких параметров в ActiveAndroid

List<Chats> s = new Select() 
       .from(Chats.class) 
       .where(col_conversation + " = ? and " + col_sender + " = ? and " + col_body + " = ?",conversation.getId(),sender.getId(),body) .execute(); 

но принести 0 строку как результат. Я уверен, что у меня такая строка в базе данных.

+0

Опубликуйте col_conversation, col_sender, col_body значения и класс модели базы данных. – rom4ek

+0

спасибо ... но я проверил их, и они верны. когда я делаю свой оператор where без параметра, он работает нормально, но когда я отправляю несколько параметров, результат получается пустым –

+0

Как насчет одного параметра? Он все еще работает с ним? Я имею в виду, что, возможно, вы должны попробовать операнд 'AND' в верхнем регистре. – rom4ek

ответ

5

Другим способ заключается в использовании нескольких where условия для выполнения многопараметрического запроса:

List<Chats> s = new Select() 
      .from(Chats.class) 
      .where(col_conversation + " = ?",conversation.getId()) 
      .where(col_sender + " = ?", sender.getId()) 
      .where(body + " = ?", body) 
      .execute(); 
+0

спасибо, что это было полезно, но если мне нужно создать оператор _and_/_or_, что мне делать? –

+0

Это не работает человек. Предложение 2nd where возвращает все записи в этом конкретном столбце. –

+0

Мне нужно проверить мой точный sql-запрос (с? Разрешенным в их соответствующие значения), как я могу это сделать? 'Выберите select = new Select();', а затем 'select.toSql()' показывает запрос с? в этом.. –

2

вы больше не передавать никаких параметров и изменить свой запрос на выборку ниже:

List<Chats> s = new Select() 
       .from(Chats.class) 
       .where(col_conversation + " = " + conversation.getId() + " and " + col_sender + " = " + sender.getId() + " and " + col_body + " = '" + body + "'") 

       .execute(); 
Смежные вопросы