将图像存储在SQLite数据库中并在ios5中检索

时间:2012-02-13 10:24:49

标签: iphone objective-c sqlite uiimageview

我正在使用SQLite 3.0和iOS5。

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

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

我该如何使用它?

3 个答案:

答案 0 :(得分:1)

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

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

然后您可以在图片视图中使用此图片:

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

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

答案 1 :(得分:1)

将整个图像用于数据库是否有任何特定原因?

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

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

然后只需在imageView中检索它,你需要调用

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

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

希望这会对你有所帮助。

答案 2 :(得分:0)

您必须创建一个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];