Извлечение записи из базы данных с помощью курсора в Android
Я использовал следующие коды для извлечения записи:
String getCredentialsFromAdmint(String name ,String pwd) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_ADMIN, new String[] { KEY_ID,
KEY_A_USER_NAME, KEY_A_PWD }, KEY_A_USER_NAME + "=?" + " AND " + KEY_A_PWD + "=?",
new String[] { name , pwd }, null, null, null, null);
if (cursor != null){
cursor.moveToFirst();
return cursor.getString(1);
}
else{
return "norecord";
}
Этот код работает, если есть запись, но если запись не найдена, приложение получает ошибку. Есть ли другие способы получения данных из базы данных?
3 ответа
Измените свой код на следующий
if ( cursor.moveToFirst()){
return cursor.getString(1);
} else{
return "norecord";
}
Вы не проверяете, если cursor.moveToFirst()
возвращает истину;
Это должно выглядеть так:
if (cursor != null) {
if(cursor.moveToFirst()){
return cursor.getString(cursor.getColumnIndexOrThrow(KEY_A_USER_NAME));
} else{
//no record
}
} else {
//invalid uri
}
Попробуйте использовать следующий код вместо
if (cursor != null){
cursor.moveToFirst();
if(cursor.isAfterLast() == false) {
return cursor.getString(1);
}
else
{
return "norecord";
}
}
else{
return "norecord";
}