Обычно это происходит, когда у вас нет данных в вашем Cursor
, и вы все еще пытаетесь получить доступ к данным.Это похоже на ArrayIndexOutOfBoundsException
.До сих пор я не нашел ничего плохого в вашем запросе.Тем не менее, я думаю, что вы могли бы рассмотреть возможность добавления проверки null
в ваш код, которая предотвратит сбой вашего приложения.Особенно в цикле while
необходимо поставить проверку null
в условии.
И вам нужно использовать функцию moveToFirst
везде, где это необходимо.
public Cursor getAllDataTableStaffDatabase(String table_name) {
this.open();
Cursor result = this.mDb.rawQuery("SELECT * FROM " + table_name,null);
return result;
}
public String findNameOfStaffBymail(String mail) {
String sql = " SELECT * FROM " + DatabaseStaffHandler.STAFF_TABLE_NAME + " WHERE " + DatabaseStaffHandler.STAFF_MAIL + " = ? ";
Cursor result = super.mDb.rawQuery(sql, new String[]{mail});
Cursor data = super.getAllDataTableStaffDatabase(DatabaseStaffHandler.STAFF_TABLE_NAME);
// Add a null checking here.
if (result != null) {
result.moveToFirst();
String test = result.getString(1);
}
if(data != null) data.moveToFirst();
while (data != null) {
if (data.getString(3).equals(mail)) {
viewAll();
return data.getString(1);
}
data.moveToNext();
}
}
Надеюсь, что это решит вашу проблему.