Проблема с использованием переменной в запросе - PullRequest
0 голосов
/ 04 августа 2011

Я бьюсь над этим несколько часов, я проверял много способов и знаю, где проблема, но я просто не могу понять, как ее исправить, мне нужна внешняя точка зрения здесь. *

Это мой код запроса:

public Cursor getAllExpensesUser(int user){<br> String sql = "SELECT * FROM expense WHERE _id IN (SELECT id_expense FROM forwho WHERE id_user = "+ user +")"; return mDb.rawQuery(sql, null); }

С этим запросом ничего не возвращается.

При использовании следующего запроса он возвращает желаемые строки ... очевидно, я использую номер идентификатора напрямую.

`String sql = "SELECT * FROM expense WHERE _id IN (SELECT id_expense FROM forwho WHERE id_user = 2)";`

Я пробовал также с аргументами:

public Cursor getAllExpensesUser(int user){<br> String sql = "SELECT * FROM expense WHERE _id IN (SELECT id_expense FROM forwho WHERE id_user = ?)"; String[] arguments = {Integer.toString(user)}; return mDb.rawQuery(sql, arguments);

Итак, проблема в том, что я использую переменную.

Кто-нибудь может увидеть, где я все испортил?

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 августа 2011

попробуй заменить

String sql = "SELECT * FROM expense WHERE _id IN (SELECT id_expense FROM forwho WHERE id_user = "+ user +")";

с

String sql = new String("SELECT * FROM expense WHERE _id IN (SELECT id_expense FROM forwho WHERE id_user = "+ String.valueOf(user) +")");

РЕДАКТИРОВАТЬ: использовать String.valueOf вместо Integer.toString

0 голосов
/ 04 августа 2011

должно быть WHERE id_user = '" + user + "')";

SQL требует одинарных кавычек вокруг данных справа от равенства.

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