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();
queryMethode gelesen habe , scheint esselectionsich nicht um einen Spaltennamen zu handeln, sondern um eine vollständige WHERE-Klausel, die möglicherweise?Verweise auf enthältselectionArgs. Das heißt,selectionsollte so sein"PlayerName=?",selectionArgsals wäre es eine Liste mit einem Wert (wie in Ihrem Code).