SQLite中的BLOB?

时间:2011-02-12 22:55:30

标签: iphone objective-c ios sqlite nsdata

我创建了一个ID为AUTOINCREMENT且图像为BLOB的SQLite数据库。

现在,我想在图像列中插入图像。我是一个很大的目标 - 一直在尝试各种各样的东西,但它们似乎并没有起作用。我对MYSQl了解很多,但不是SQLite,我似乎无法弄明白。

我有uploadImage(UIImage)。我正在使用Matteo Bertozzi的SQLite包装器here。以下是我用手机拍摄图像后的一些代码:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
    [picker.parentViewController dismissModalViewControllerAnimated:YES];

    uploadImage = image;

    NSData *dataForImage = UIImagePNGRepresentation(uploadImage);

    [database executeNonQuery:@"INSERT INTO process (image) VALUES (dataForImage)"]; 

}

再次感谢!

库尔顿

2 个答案:

答案 0 :(得分:1)

你的executeNonQuery实际上从未传递过你的dataForImage参数(你只是传递一个字符串),所以......

改变这个:

[database executeNonQuery:@"INSERT INTO process (image) VALUES (dataForImage)"]; 

对此:

[database executeNonQuery:@"INSERT INTO process (image) VALUES (?);", dataForImage];

答案 1 :(得分:1)

  • 语言是Objective-C,而不是C ++。 :)

一般而言,无论是在潜在的内存使用还是I / O方面,将大量图像推送到SQLite数据库都会效率低下。它会更慢并且使用更多资源。最好将图像放入文件系统,然后从SQLite数据库中引用文件系统。

这与Blob Data Type?

有关