Ich erhalte den folgenden Fehler und habe keine Ahnung, warum er auftritt. Ich habe mich gefragt, ob jemand anderes in der Lage sein könnte, etwas Licht in das Thema zu bringen.
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)
Der Code ist hier:
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();
query
Methode gelesen habe , scheint esselection
sich nicht um einen Spaltennamen zu handeln, sondern um eine vollständige WHERE-Klausel, die möglicherweise?
Verweise auf enthältselectionArgs
. Das heißt,selection
sollte so sein"PlayerName=?"
,selectionArgs
als wäre es eine Liste mit einem Wert (wie in Ihrem Code).