首页 > 解决方案 > 无法读取第 0 行 sqlitedatabase

问题描述

如何解决?

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.

标签: javaandroidsqlite

解决方案


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

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

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

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

或者,显示了一种方法,您可以通过将数据分成几部分来存储这样的一个或多个图像。


推荐阅读