BLOB в SQLite? - PullRequest
       14

BLOB в SQLite?

0 голосов
/ 13 февраля 2011

Я создал базу данных SQLite с идентификатором AUTOINCREMENT и изображением BLOB.

Теперь я хочу вставить изображение в столбец изображения. Я большой целеустремленный человек и пробовал все виды вещей, но они, кажется, не работают. Я много знаю о MYSQl, но не о SQLite, и, похоже, не могу понять.

У меня есть uploadImage (UIImage). Я использую оболочку SQLite Маттео Бертоцци здесь . Вот мой код после того, как кто-то снимает изображение со своего телефона:

- (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 ]

1 голос
/ 13 февраля 2011
  • язык - Objective-C, а не C ++.:)

Как правило, перенос большого количества изображений в базу данных SQLite будет неэффективным как с точки зрения потенциального использования памяти, так и с точки зрения ввода-вывода.Это будет медленнее и использовать больше ресурсов.Лучше поместить изображения в файловую систему, а затем обратиться к файловой системе из базы данных SQLite.

Это относится к Тип данных BLOB-объектов?

1 голос
/ 13 февраля 2011

Ваш executeNonQuery фактически никогда не передает ваш параметр dataForImage (вы просто передаете строку), поэтому ...

Изменить это:

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

К этому:

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