在阅读具有blob内容的表时,Android SQLite游标出现问题

时间:2015-08-23 16:14:20

标签: java android sqlite

我收到了应用程序的少数用户报告的异常情况。但是,当我尝试使用本地设备时,我没有得到相同的结果。 需要就如何解决问题的方法提出建议。

  

java.lang.IllegalStateException:无法从CursorWindow读取第0行,第0列。在从中访问数据之前,请确保正确初始化Cursor。       在android.database.CursorWindow.nativeGetLong(本机方法)       在android.database.CursorWindow.getLong(CursorWindow.java:507)       在android.database.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:75)       在android.database.AbstractCursor.moveToPosition(AbstractCursor.java:220)       在android.database.AbstractCursor.moveToFirst(AbstractCursor.java:237)

以下是上下文的详细信息:

将图像存储为blob的表格中存在异常。表定义是  photo_id字符串,  blob_image Blob  blob_date字符串

获取blob数据的代码如下

byte[] photo= null;
Cursor cursor = null;
String criteria = " photo_id = ?";
String[] arguments = {photoid}; 
try {
    cursor = database.query("MY_GALLERY", null,criteria, arguments, null, null, null);
    if(null !=cursor){
        int rowCount = cursor.getCount();
        if(rowCount>0){
            cursor.moveToFirst();
            int colIndex = cursor.getColumnIndex("blob_image");
            if (colIndex != -1) {
                photo = cursor.getBlob(colIndex));
            }           
        }
   }
} catch (Exception e) {
    e.printStackTrace();
}

因为我在尝试检查cursor.getCount()后行计数大于0时尝试获取blob值我发现很难 为什么会引发cusrsor初始化问题。 我还试图检查保存图像的大小。它们的尺寸不到400kb。

使用Android版本4.4.4的Nexus 7和Android版本4.4的三星平板电脑SM-T116NY也会报告此错误。

该应用程序已使用超过两年,我第一次遇到此问题。

我已经检查了相似和相关的问题,并提到了大多数建议[关于适当的数据库初始化, 处理游标索引,打开/关闭游标,行大小限制小于2mb [照片]

将其存储在数据库中的一个原因是有一个备用存储,用户不会错误地删除内容。 在应用程序中,仅当在文件系统中找不到图像时才使用来自DB的图像。

任何建议或建议?

感谢 普拉迪普

0 个答案:

没有答案