Android SQLite错误:java.lang.IllegalStateException:无法从CursorWindow读取行0,列0

时间:2019-07-26 10:29:51

标签: android sqlite

撰写2MB邮件并发送到相同的电子邮件ID时。然后,我尝试回复同一封邮件[2MB]。它正在发送。打开回复邮件时,出现以下错误。

  

错误:“ java.lang.IllegalStateException:无法读取行0,列0   来自CursorWindow。确保游标已正确初始化   然后从中访问数据。”

此行出现错误:

cursor.getString(0);

3 个答案:

答案 0 :(得分:0)

请考虑首先获取列索引,然后尝试读取该值。由于您没有发布代码,因此我只能提出以下建议:

cursor.getString(cursor.getColumnIndex(0));

例如,您的代码可能如下所示:

String query = "some_query_here";
Cursor cursor = db.rawQuery(query, null);

if(cursor.getCount() > 0) {
   cursor.moveToFirst();
   while(!cursor.isAfterLast()) {
      String result  = cursor.getString(cursor.getColumnIndex(0));
      cursor.moveToNext();
   }
   cursor.close();
} 

也许,在初始化Cursor对象时犯了一个错误。考虑重新检查您的代码。

答案 1 :(得分:0)

如果您的Cursor返回了任何行,则它将包含至少1个索引为0的列,因此不会有错误。
但是看来它是空的(无行)。
您需要检查是否存在任何行的是moveToFirst(),如果存在第一行(因此是任何行),则返回true

if (cursor.moveToFirst()) {
    String columnvalue = cursor.getString(0);  
} else {
    // write your code here
}

答案 2 :(得分:0)

看起来你的行有超过 2MB 的数据大小,所以游标抛出 IllegalStateException。