如何解析 android.database.CursorIndexOutOfBoundsException:请求索引 0



我已经寻找解决方案很长时间了,但仍然找不到使其工作的相关方法。
我在外部myDBClass中.java在Android工作室中有此方法以查找最后插入的行。

public Cursor lastrow() {
// TODO Auto-generated method stub
try{
SQLiteDatabase db;
db = this.getReadableDatabase(); // Read Data
String query = "SELECT ID As _id, Spinpos, Details, Setfor from alarm order by ID DESC limit 1";
Cursor cursor = db.rawQuery(query, null);
if(cursor != null)
{
cursor.moveToFirst();
return cursor;
}
else
{
return null;
}
} catch (Exception e) {
return null;
}
}

然后我在MainActivity中执行它.java

myDBClass myDb = new myDBClass(this);      
Cursor cursor  = myDb.lastrow();  
String SongID = cursor.getString(cursor.getColumnIndex("Spinpos"));  
Toast.makeText(this,SongID,Toast.LENGTH_LONG).show();  

它抛出android.database.CursorIndexOutOfBoundsException。请为我提供一个解决方案。

游标初始化为位置 -1,因此当您调用moveToNext(( 时,如果游标到达位置 0,则返回 true,这意味着数据库至少获取了一个值。

使用这个

if(cursor.moveToNext()){
//database fetched at least one value
}

您还需要检查光标是否有结果,如下所示:

if (cursor != null && cursor.getCount() > 0)

最新更新