Как я могу преобразовать этот запрос в rawQuery? - PullRequest
0 голосов
/ 10 декабря 2010

Мой запрос к базе данных сейчас настроен так:

Edit, кстати, мои переменные (_ID, CAT_ITEM и BUDGET_AMOUNT) на самом деле содержат точно такой же текст и форматирование, как они написаны, глупо, я знаю, но в любом случае это не должно быть проблемой

private String[] from = {_ID, CAT_ITEM, BUDGET_AMOUNT, };
private String orderBy = _ID + " ASC";
private String whereIn = "IN_OUT='in'";

Cursor cursor = db.query(CAT_BUD_TAB, from, whereIn, null, null, null, orderBy);

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

Вот что я придумал:

private String incomeQuery = "SELECT _ID, CAT_ITEM, BUDGET_AMOUNT FROM CAT_BUD_TAB WHERE IN_OUT=’in’";
Cursor cursor = db.rawQuery(incomeQuery, null);

Однако это не работает (у меня SQLException нет такого столбца), поэтому я пытаюсь выяснить, в чем разница, я думаю, что с моим утверждением что-то не так, но понятия не имею, что. Кто-нибудь может предложить мне какой-нибудь совет? Спасибо

Ответы [ 2 ]

1 голос
/ 10 декабря 2010

Из вашего кода это выглядит как _ID, CAT_ITEM, BUDGET_AMOUNT и CAT_BUD_TAB - строковые поля. Их значения совпадают с именами полей?

Ваши одинарные кавычки также выглядят по-разному между двумя запросами.

Не относится к вашей проблеме, но вам также нужно добавить ORDER BY _ID ASC в конец sql для репликации порядка результата.

1 голос
/ 10 декабря 2010

В вашем первом примере у вас есть следующее:

private String[] from = {_ID, CAT_ITEM, BUDGET_AMOUNT, };

Если это правильно, это означает, что у вас есть три переменные _ ID, CAT_ITEM и BUDGET_AMOUNT с именами столбцов в вашей таблице. То же самое касается CAT_BUD_TAB, который, вероятно, содержит имя вашей таблицы.

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

String incomeQuery = "SELECT " + _ID + ", " + CAT_ITEM + ", " + BUDGET_AMOUNT + " FROM " + CAT_BUD_TAB + " WHERE IN_OUT=’in’";

И просто сказать это: это не очень хороший способ составить строку. Вместо этого это должно быть сделано с помощью StringBuilder. Я просто сделал это здесь для простоты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...