我正在尝试检查我的数据库中是否已存在某个人。
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));
如果此人不存在,那么我添加它们。如果此人确实存在,那么我将使用新信息进行更新。
答案 0 :(得分:1)
你需要做
if(cursor.moveToFirst()){
personToReturn = new Person(cursor.getInt(0), cursor.getString(1), cursor.getString(2));
}
这会将光标移动到第一个位置,并且还允许您检查以确保其中包含某些内容
答案 1 :(得分:0)
替换以下代码。
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"))
);
}