【问题标题】:how to load more than 1 MB data from sqlite db to android cursor?如何将超过 1 MB 的数据从 sqlite db 加载到 android 游标?
【发布时间】:2011-08-04 08:34:51
【问题描述】:

正是我正在尝试将超过 1MB 的数据从 sqlite 数据库加载到 android 游标。在加载时它会出现以下错误,例如

08-04 11:10:15.813: ERROR/CursorWindow(4465): need to grow: mSize = 2097152, size = 403719, freeSpace() = 209669, numRows = 1
08-04 11:10:15.813: ERROR/CursorWindow(4465): Attempting to grow window beyond max size (2097152)
08-04 11:10:15.813: ERROR/Cursor(4465): Failed allocating 403719 bytes for blob at 0,13
08-04 11:10:15.813: DEBUG/Cursor(4465): finish_program_and_get_row_count row 0
08-04 11:10:15.899: ERROR/CursorWindow(4465): need to grow: mSize = 2097152, size = 403719, freeSpace() = 209669, numRows = 1
08-04 11:10:15.899: ERROR/CursorWindow(4465): Attempting to grow window beyond max size (2097152)
08-04 11:10:15.899: ERROR/Cursor(4465): Failed allocating 403719 bytes for blob at 0,13
08-04 11:10:15.899: DEBUG/Cursor(4465): finish_program_and_get_row_count row 0
08-04 11:10:15.899: ERROR/CursorWindow(4465): Bad request for field slot 0,0. numRows = 0, numColumns = 14
08-04 11:10:15.899: DEBUG/AndroidRuntime(4465): Shutting down VM.

如果有人知道如何将大数据(超过 1MB)加载到 android 光标? 谢谢,

【问题讨论】:

  • 为什么游标中有 1MB 的数据?成吨的行?您是否使用投影仅使用您需要的列?你使用blob吗?你能限制结果吗?
  • 我在一个表中有两个 blob 对象,一个用于图像,另一个用于音频。这两个 blob 的大小超过 1MB。一个单行大小超过 1mb。那我该怎么办?

标签: android sqlite android-cursor


【解决方案1】:

不要在数据库中存储 500KB 的 blob。将标识符存储在数据库中,并将 blob 作为文件放入存储中。如果您使用 MODE_PRIVATE,其他进程将无法访问它们。

【讨论】:

  • 好的,谢谢你的建议。但出于某种原因我想使用数据库。
  • ...哪些是?您使用的是移动平台,因此您需要一个充分的理由来选择低效的存储方法。
  • 如何在应用目录下创建一个mode私有文件夹?
  • 就像我说的,使用 MODE_PRIVATE。见这里:Context.openFileOutput:developer.android.com/reference/android/content/…
猜你喜欢
  • 1970-01-01
  • 2021-05-04
  • 2016-08-24
  • 2019-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多