I'm getting the following error, and I have no idea why it is occurring. I was wondering if anyone else might be able to shed some light on the issue.
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)
The code is here:
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();
The selection
should be an expression and selectionArgs
should have as many elements as there are ?
literal placeholders in selection
.
Your selection
is not an expression and does not have any ?
but you have one element in selectionArgs
.
You probably want something like:
String selection = PlayerEntry.COLUMN_NAME_PLAYER_NAME + "=?";
to make it an expression that matches the player name column agains the literal you're binding in selectionArgs[0]
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With