【问题标题】:BLOB in SQLite?SQLite中的BLOB?
【发布时间】:2011-06-26 06:04:53
【问题描述】:

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

现在,我想在图像列中插入图像。我是一个很大的objective-c nube,并且一直在尝试各种各样的东西,但它们似乎并没有奏效。我对 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)"]; 

}

再次感谢!

库尔顿

【问题讨论】:

    标签: iphone objective-c ios sqlite nsdata


    【解决方案1】:
    • 语言是 Objective-C,而不是 C++。 :)

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

    这与Blob Data Type?有关

    【讨论】:

    • 是的,我听说过。但我不打算将任何图像存储在(最多 15 个)中。谢谢你的链接,我去看看。
    【解决方案2】:

    您的 executeNonQuery 从未真正传递您的 dataForImage 参数(您只是传递一个字符串),所以...

    改变这个:

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

    到这里:

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

    【讨论】:

    • 感谢您的回复!我使用了 NSlog 并在控制台中显示了表格,但出现此错误:在抛出“NSException”实例后调用终止
    猜你喜欢
    • 2012-08-07
    • 2017-05-07
    • 2011-08-16
    • 2015-06-19
    • 2020-07-25
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多