为什么会收到此 CursorIndexOutOfBoundsException?
Why am getting this CursorIndexOutOfBoundsException?
我正在尝试检查某个人是否已存在于我的数据库中。
public Person personExistsInDatabase(String nickname){
Person personToReturn = null;
SQLiteDatabase sqliteDB = this.getReadableDatabase();
String query = "SELECT _id, firstName, lastName FROM " + PERSON_TABLE + " WHERE nickname = '" + nickname + "'";
Cursor cursor = sqliteDB.rawQuery(query, null);
if(cursor.getCount() > 0){
personToReturn = new Person(cursor.getInt(0), cursor.getString(1), cursor.getString(2));
}
cursor.close();
sqliteDB.close();
return personToReturn;
}
我得到的错误是:
android.database.CursorIndexOutOfBoundsException: Index -1 requested with a size of 1
我在这条线上得到它:
personToReturn = new Person(cursor.getInt(0), cursor.getString(1), cursor.getString(2));
如果这个人不存在,那么我会添加他们。如果这个人确实存在,那么我会更新新信息。
你需要做
if(cursor.moveToFirst()){
personToReturn = new Person(cursor.getInt(0), cursor.getString(1), cursor.getString(2));
}
这会将光标移动到第一个位置,还允许您检查以确保里面有东西
按照您的代码替换。
if(cursor.moveToFirst()){
personToReturn = new Person(
cursor.getInt(cursor.getColumnIndex("your_column_name")),
cursor.getString(cursor.getColumnIndex("your_column_name")),
cursor.getString(cursor.getColumnIndex("your_column_name"))
);
}
我正在尝试检查某个人是否已存在于我的数据库中。
public Person personExistsInDatabase(String nickname){
Person personToReturn = null;
SQLiteDatabase sqliteDB = this.getReadableDatabase();
String query = "SELECT _id, firstName, lastName FROM " + PERSON_TABLE + " WHERE nickname = '" + nickname + "'";
Cursor cursor = sqliteDB.rawQuery(query, null);
if(cursor.getCount() > 0){
personToReturn = new Person(cursor.getInt(0), cursor.getString(1), cursor.getString(2));
}
cursor.close();
sqliteDB.close();
return personToReturn;
}
我得到的错误是:
android.database.CursorIndexOutOfBoundsException: Index -1 requested with a size of 1
我在这条线上得到它:
personToReturn = new Person(cursor.getInt(0), cursor.getString(1), cursor.getString(2));
如果这个人不存在,那么我会添加他们。如果这个人确实存在,那么我会更新新信息。
你需要做
if(cursor.moveToFirst()){
personToReturn = new Person(cursor.getInt(0), cursor.getString(1), cursor.getString(2));
}
这会将光标移动到第一个位置,还允许您检查以确保里面有东西
按照您的代码替换。
if(cursor.moveToFirst()){
personToReturn = new Person(
cursor.getInt(cursor.getColumnIndex("your_column_name")),
cursor.getString(cursor.getColumnIndex("your_column_name")),
cursor.getString(cursor.getColumnIndex("your_column_name"))
);
}