cursor.getString(i)上的CursorIndexOutOfBoundsException

时间:2011-10-18 08:29:43

标签: android sqlite

我的代码中有一个检查数据库内容的方法。以下是代码:

    if(rowId  >= 1){

        Cursor cursor = adapter.fetchAllQRurl();
        int length = cursor.getCount();

        for( int i=0; i<length ; i++){
           if(contents.equals(cursor.getString(i))){
          Toast.makeText(this, "The entry already exists.",Toast.LENGTH_LONG).show();
        }
    }

但我总是得到以下错误。我不确定“cursor.getString(i)”出了什么问题 我错过了我的代码吗?

 android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 5
    at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)
    at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214)
    at android.database.AbstractWindowedCursor.getShort(AbstractWindowedCursor.java:69)

3 个答案:

答案 0 :(得分:2)

尝试这种方式从Cursor获取值。 您需要将光标位置放在开头,以便它返回值

Cursor cursor = adapter.fetchAllQRurl();
if (cursor.moveToFirst()) {
    do {
        String Test = mNotesCursor.getString("Your_Column_Name");
    } while (cursor.moveToNext());
}

答案 1 :(得分:1)

从Cursor对象获取数据的更好方法是:

if (cursor.moveToFirst()){
   do{
      String data = cursor.getString(i);
      // do what ever you want here
   }while(moveToNext());
}
cursor.close();

答案 2 :(得分:0)

您的代码中存在一些问题: