【问题标题】:How to insert your own image into a SQLite table?如何将自己的图像插入 SQLite 表?
【发布时间】:2019-02-10 08:05:59
【问题描述】:

我已经制作了一个表格,其中已经存储了用户信息。当用户使用 id 注册时,如果 id 匹配,则从表中检索用户名、课程等所有详细信息。现在我想在我的用户信息表中添加个人资料图片。互联网上几乎所有的教程都是关于将手机中的照片保存到该数据库中并检索它。但我不想那样。我想为每个用户在表中添加不同的图像,即它应该是特定于用户的。现在我知道使用了 BLOB 数据类型,并且应该将图像转换为字节。但我不知道我应该将图像存储在哪里,无论是在我的手机中还是在我的 res 文件夹中。或者也许将其存储在互联网上。我很困惑。 我应该提到这不是一个理想的应用程序,它只是一个模型。

【问题讨论】:

  • 将图像存储在手机内存而不是数据库中,除非存在安全问题。
  • 那我如何指定路径并检索它?
  • 存储 BLOBS 是一种最糟糕的做法

标签: android imageview android-sqlite sqliteopenhelper insert-image


【解决方案1】:

要考虑的最重要因素之一是图像的大小。如果大小可能超过 200k,那么出现问题的风险就会增加,不是将图像存储在数据库中,而是检索图像。

如果不编写自己的 CursorWindow 替代方案,则 CursorWindow(用于保存 Cursor 中行的子组的缓冲区)的大小限制为 2M(在以后的版本中,我相信它是 1M)。如果图片接近 2MB,则无法检索图片(即使不考虑其他列的空间)。

因此,通常推荐的方法是不存储图像,而是存储从其他地方的文件存储中检索图像的方法(您提到了 res 文件夹,这可能很好,但您可能需要考虑APK),然后您可以将文件路径存储在数据库中。

有一个涵盖上述内容的更全面的答案,包括将小图像存储在数据库中,并将较大的图像存储在其他地方(资产文件夹)here

【讨论】:

    【解决方案2】:

    对于像我一样有同样问题的人,我发现this 教程是存储和检索图像的最简单方法。它使用外部 sqlite 数据库来存储图像和信息,并在 java 页面中访问它以显示,我发现这很容易。

    【讨论】:

      猜你喜欢
      • 2013-03-21
      • 2010-10-18
      • 2011-07-22
      • 1970-01-01
      • 2012-10-05
      • 1970-01-01
      • 1970-01-01
      • 2016-03-14
      • 2013-12-31
      相关资源
      最近更新 更多