Привязка или индекс столбца вне диапазона, запрос sqlite таблицы Android Ошибка - PullRequest
0 голосов
/ 21 марта 2012

Я пытаюсь сделать запрос к sqlite android, чтобы увидеть, например, сколько пользователей с данным именем пользователя существует в таблице.Это моя функция.Я должен указать, что "getContentResolver ()! = Null" и так же имя переменной.

private int findSelectedUser(String name) {
        int count = 0;

        try {
            String[] whereArgs = new String[] {name};
            String[] PROJECTION = new String[] { MyProvider.SETTINGS_USERNAME };
            Cursor c = getContentResolver().query(MyProvider.SETTINGS_URI,
                    PROJECTION, MyProvider.SETTINGS_USERNAME , whereArgs, null);
            if (c != null) {
                count = c.getCount();
                c.close();
            }
        } catch (NullPointerException e) {

        }
        System.out.println("Found something? " + count);
        return count;
    }

И после запуска я получаю ошибку от субъекта ... и не получаю ее.В моем предложении where у меня есть один столбец, в моих аргументах where одно значение.Пожалуйста, помогите мне разобраться в этом, спасибо.

1 Ответ

9 голосов
/ 21 марта 2012

Я думаю, что это работает:

String[] whereArgs = new String[] {name};
String[] PROJECTION = new String[] { MyProvider.SETTINGS_USERNAME };
Cursor c = getContentResolver().query(MyProvider.SETTINGS_URI,
        PROJECTION, MyProvider.SETTINGS_USERNAME + "=?" , whereArgs, null);
if (c != null) {
    count = c.getCount();
    c.close();
}

Если вы хотите использовать whereArgs, вы должны иметь такое же количество ? в where, как у вас есть предметы whereArgs

whereArgs заменит ? в окончательном запросе к базе данных

String where = "name = ? OR name = ?";
String[] whereArgs = new String[] {
    "Peter",
    "Jim"
};

, что приведет к name = 'Peter' OR name = 'Jim' для запроса.

Кстати: не catch(NullPointerException e) - сделайте ваш код безопасным, чтобы он не мог случиться

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