无法读取第0行sqlitedatabase

时间:2019-03-05 02:48:19

标签: java android sqlite

如何解决?

W/CursorWindow: Window is full: requested allocation 2108731 bytes, free space 17752 bytes, window size 2097152 bytes
W/CursorWindow: Window is full: requested allocation 2108731 bytes, free space 2096480 bytes, window size 2097152 bytes
E/CursorWindow: Failed to read row 0, column 0 from a CursorWindow which has 0 rows, 9 columns.

1 个答案:

答案 0 :(得分:0)

您正在数据库中存储行数据(通常其中一列包含作为blob的媒体对象(例如图像)),而该行数据太大而无法被Cursor处理。正在尝试检索超出分配给“游标窗口”的2M(2097152字节)的 2108731 个字节。

即使您可以存储如此数量的数据,也无法使用android SDK的Cursor方法(未经修改)来检索如此大量的数据。

解决方法是将这些数据作为文件存储在Blob之后(通常为图像),然后在数据库中存储对该文件的引用(例如,文件的路径或其一部分)。

link包含示例(基于图片)和对该问题的更全面概述。

或者,this展示了一种通过将数据分成几部分来存储此类图像的方法。