Intereting Posts
R не может быть разрешен – Android, без импорта android.R; заявление Md5 с Android и PHP Строка JSON возвращается из веб-службы SOAP, не содержащей записей для таблицы Автоматическая установка Android Прозрачный макет в Android? Android: всплывающее окно с ошибкой в ​​EditText не сдвигается вниз, когда клавиатура уходит Android. Можно ли вставлять значения @IntDef внутри @interface? Передавать растровое изображение из одной активности в другую Показать значки в меню переполнения в панели контекстного действия Android Media Player не будет воспроизводиться после остановки SetRadius on Circle дает пользователям плохой опыт работы на Картах Google Меню Android Action Bar не отображается, когда целевая версия sdk больше 10. Почему? SQLite добавить столбец, сохранить данные Как добавить ключевые слова для оптимизации поиска моего приложения для Android в магазине google play Android Game API: Leaderboard – получить конкретный счет игрока?

SQLite: не удается привязать аргумент к индексу 1, потому что индекс выходит за пределы диапазона. Оператор имеет 0 параметров

Я получаю следующую ошибку, и я понятия не имею, почему она происходит. Мне было интересно, сможет ли кто-нибудь еще пролить свет на этот вопрос.

12-25 22:52:50.252: E/AndroidRuntime(813): Caused by: java.lang.IllegalArgumentException: Cannot bind argument at index 1 because the index is out of range. The statement has 0 parameters. 12-25 22:52:50.252: E/AndroidRuntime(813): at android.database.sqlite.SQLiteProgram.bind(SQLiteProgram.java:212) 12-25 22:52:50.252: E/AndroidRuntime(813): at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:166) 12-25 22:52:50.252: E/AndroidRuntime(813): at android.database.sqlite.SQLiteProgram.bindAllArgsAsStrings(SQLiteProgram.java:200) 12-25 22:52:50.252: E/AndroidRuntime(813): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47) 12-25 22:52:50.252: E/AndroidRuntime(813): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314) 12-25 22:52:50.252: E/AndroidRuntime(813): at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1161) 12-25 22:52:50.252: E/AndroidRuntime(813): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1032) 12-25 22:52:50.252: E/AndroidRuntime(813): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1200) 

Код находится здесь:

 public Player getPlayer(String name) { SQLiteDatabase db = this.getReadableDatabase(); String[] projection = { PlayerEntry.COLUMN_NAME_PLAYER_NAME, PlayerEntry.COLUMN_NAME_PLAYED_GAMES, }; String selection = PlayerEntry.COLUMN_NAME_PLAYER_NAME ; String[] selectionArgs = new String[1]; selectionArgs[0] = name; Cursor cursor = db.query( PlayerEntry.TABLE_NAME, // The table to query projection, // The columns to return selection, // The columns for the WHERE clause selectionArgs, // The values for the WHERE clause null, // don't group the rows null, // don't filter by row groups null // The sort order ); if (cursor != null) cursor.moveToFirst(); 

Solutions Collecting From Web of "SQLite: не удается привязать аргумент к индексу 1, потому что индекс выходит за пределы диапазона. Оператор имеет 0 параметров"

selection должен быть выражением, а selectionArgs должен иметь столько элементов, сколько есть ? Литеральные заполнители в selection .

Ваш selection не является выражением, а его нет ? Но у вас есть один элемент в selectionArgs .

Вы, вероятно, хотите что-то вроде:

 String selection = PlayerEntry.COLUMN_NAME_PLAYER_NAME + "=?"; 

Чтобы сделать это выражением, которое соответствует столбцу имени игрока, снова в литере, который вы связываете в selectionArgs[0] .