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] .