【问题标题】:How to store and retrieve images in sqlite database in android?如何在android的sqlite数据库中存储和检索图像?
【发布时间】:2011-11-13 15:48:57
【问题描述】:

我正在开发测验应用程序,我需要显示问题以及图像。我已将问题存储在 sqlite 数据库中在 android 中显示它们。但我不知道如何将图像存储在 sqlite db 中并显示它们。 我浏览了很多链接,找到了如何从远程数据库显示图像。但我需要显示来自本地 sqlite db 的图像。我怎样才能做到这一点。请帮我解决这个问题。

提前致谢。

【问题讨论】:

  • 欢迎来到 Stackoverflow!如果您发现回复有帮助,请投票。如果回复成功回答了您的问题,请点击旁边的绿色复选标记接受答案。也请查看stackoverflow.com/questions/how-to-ask 以获取有关如何写出好问题的建议

标签: android


【解决方案1】:

您通常不会将二进制数据保存到数据库中。它被认为是错误的形式,并且由于数据最终存储在磁盘上的方式,可能会使对数据库的查询花费很长时间。您应该做的是在数据库中存储图像的文件路径并将图像存储在 sdcard 上。

无需为您编写大量代码,这里有一个高级示例。首先,使用以下 sql 调用创建表来存储图像:

CREATE TABLE images (_id INTEGER PRIMARY KEY AUTOICREMENT, file_path TEXT, name TEXT);

当需要插入图像时,您必须做两件事。首先,将图像写入 SD 卡。请按照此处的说明进行操作。一旦你把它写出来并得到一个文件名,你就可以像这样执行一个 sql 查询:

INSERT INTO images (file_path, name) VALUES ("your file path", "name of image");

当你真正需要显示图像时,你只需从你的 sdcard 中读取 file_path 指定的文件。

【讨论】:

  • 我要补充一点,如果您没有很多图像和/或它们很小,请考虑将它们存储在本地而不是 sdcard。如果你有很多东西,或者动态更新,不要这样做。但是,如果您占用的空间相对较小,则将它们存储在本地意味着您不必担心如果 sdcard 数据突然消失或 sdcard 不可用(两者都可能)会发生什么。
【解决方案2】:

本着实际回答您提出的问题的精神,如果您真的想将图像写入数据库,您可以添加一个 BLOB 字段并将数据存储在其中,但没有理由这样做......只需关注 Kurtis Nusbaum 的建议并将图像存储为一个文件,并在 db 行中引用它的位置。

【讨论】:

    猜你喜欢
    • 2012-08-01
    • 1970-01-01
    • 2015-03-16
    • 2015-08-01
    • 2011-05-10
    • 2014-04-20
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    相关资源
    最近更新 更多