gpt4 book ai didi

java - 光标因 CursorIndexOutOfBoundsException 崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 09:42:05 26 4
gpt4 key购买 nike

由于 Android 数据库错误,我的光标导致应用程序崩溃。

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

我制作了另一个不太优化的 slider 来扫描我的数据库,我发现了很好的值(value)。

public Cursor getAllDataTableStaffDatabase(String table_name){
this.open();
Cursor result =this.mDb.rawQuery("SELECT * FROM " + table_name,null);
return result;// fonctionne très bien
}

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);

String test = result.getString(1); //error

while (data.moveToNext()) {
if (data.getString(3).equals(mail)) {
viewAll();
return data.getString(1);
}
}
}

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

最佳答案

当您的光标中没有数据并且您仍在尝试访问该数据时,通常会发生这种情况。它类似于 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();
}
}

希望能解决您的问题。

关于java - 光标因 CursorIndexOutOfBoundsException 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55858025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com