【问题标题】:Cursor Window Too Big Android Sqlite光标窗口太大 Android Sqlite
【发布时间】:2020-03-14 23:12:28
【问题描述】:

我正在开发一个应用程序来存储大图像,例如2 MB,本地 Sqlite DB 中的 3 MB。但是 2 MB 游标限制导致异常。这个例外有什么解决办法吗?或者,如果我应该将图像以块或部分的形式存储在 sqlite db 中。我应该如何做到这一点?

【问题讨论】:

  • 不要将图像存储在数据库中。这只是一个不好的做法。您可以将图像存储在缓存目录、私有应用程序目录、外部存储或云端。然后一旦你存储了图像,将路径/id保存在数据库中。
  • @Froyo 以前我将它们存储在内部存储中,我也认为这是一个很好的做法。但是我要将图像存储在像 Sqlite 这样的本地数据库中,因为我希望应用程序用户无法在我的应用程序之外看到或更改图像。
  • @Froyo 这些图像是从我的应用程序内部捕获的,并从我的应用程序内部上传到客户端服务器。
  • 如果图像存储在私有应用程序目录或应用程序缓存中,用户将无法查看/修改图像。可以清理应用缓存。您可以使用诸如 firebase 或 amazon 存储桶之类的东西来存储图像,而用户将无法访问它。 developer.android.com/guide/topics/data/data-storage
  • 如果图片是在客户端上传的,则不需要存入数据库。您可以将其存储在应用缓存中,因为您仅在上传之前需要该图像。

标签: java android sqlite mobile blob


【解决方案1】:

Sqlite 可能不适合直接做文件存储。也许您可以将文件存储在 DISK 上,并将 URL/PATH 存储在 sqlite 数据库中。

【讨论】:

  • 以前我将它们存储在内部存储中,我也认为这是一个很好的做法。但是我要将图像存储在像 Sqlite 这样的本地数据库中,因为我希望应用程序用户无法在我的应用程序之外看到或更改图像。
  • 我曾经在一个 Android 应用项目上工作,该项目使用自定义文件包装器来存储图像/视频,它的作用是在某种程度上“加密”文件数据。如果您确实想使用 Sqlite,也许这会有所帮助:sqlite.org/limits.html
猜你喜欢
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
  • 2017-11-08
相关资源
最近更新 更多