【问题标题】:Store Images in SQLite database and retrieve in ios5将图像存储在 SQLite 数据库中并在 ios5 中检索
【发布时间】:2012-02-13 10:24:49
【问题描述】:

我正在使用 SQLite 3.0 和 iOS5。

现在我想在数据库中以 vrchar2 数据类型存储图像并在我的 iPhone 视图中检索它。

我使用了以 BLOB 数据类型存储的图像,并通过 NSDATA 检索了它..Nut 现在我想在 ImageView 中检索它..

我该如何使用它?

【问题讨论】:

  • 有什么想法吗?我有点困惑。帮帮我!!
  • 顺便说一句,一些圈子对图像和数据库有不同的看法。在一个阵营中,您有“将图像存储在数据库中”,而在另一个阵营中,“将图像保存在文件系统中并将图像的路径存储在数据库中”。每种方法都有权衡。
  • 这个链接可以帮助你。 stackoverflow.com/questions/10811437/…

标签: iphone objective-c sqlite uiimageview


【解决方案1】:

您应该首先使用以下方法从 NSData 创建一个 UIImage:

UIImage *img = [[UIImage alloc] initWithData:theData];

然后你可以在你的图像视图中使用这个图像:

UIImageView *imgView = [[UIImageView alloc] initWithImage: img];

不要忘记进行适当的内存管理!

【讨论】:

  • 但是如何从数据库的 perticluar 行中检索图像?
  • 为此,您需要对要获取的图像有一些逻辑。你到底想达到什么目的? theData 表示您在问题中提到的检索到的 NSDATA。
【解决方案2】:

在数据库中使用整个图像有什么具体原因吗?

问这个问题的原因仅仅是因为我认为将 NSData 存储在数据库中就是在数据库中存储大量数据,从长远来看,这会使您的数据库变得非常沉重。

更好的选择是将图像保存在文档目录中,或者可能是库目录,然后简单地将图像的完整图像路径保存在数据库中。

然后简单地在你需要调用的 imageView 中检索它

UIImageView *imgView = [UIImageView setImage:[[UIImage alloc] initWithContentsOfFile:filePath]];

这里你只需要传递你从数据库中获取的“filePath”。

希望对你有所帮助。

【讨论】:

  • 是的...更好的选择...我会尝试...谢谢
【解决方案3】:

您必须创建一个 DAO,以便您可以从 sqlite 文件中检索信息。然后调用该文件以获取您需要的所有信息。 然后像这样检索 blob:

const char * myData = sqlite3_column_blob(statement, 1(this number is different according to your database));
int myDataSize = sqlite3_column_bytes(statement, 1);
NSData *data = [NSData dataWithBytes:myData length:myDataSize];

然后初始化

myPhoto.thePhoto = [[UIImage alloc] initWithData:data];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-01
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    相关资源
    最近更新 更多