光标崩溃与CursorIndexOutOfBoundsException

时间:2019-04-25 21:41:20

标签: java android android-cursor android-database

我的光标因android数据库错误而使我的应用程序崩溃。

componentWillUnmount

我制作了另一个优化程度不高的滑块,它可以扫描数据库,并发现了很好的价值。

CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1

我想检索与电子邮件地址对应的值名称。

2 个答案:

答案 0 :(得分:0)

当您的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();
    }
}

希望能解决您的问题。

答案 1 :(得分:0)

谢谢您的答复。多亏了你,我发现了我的问题。我想知道游标是否最后不启动。但是,最好检查接收到的是否不为空。谢谢,祝你有美好的一天