Следующий код Я пишу для хранения изображения в БД.Сохранение изображения в SQLite
NSString *insertSQL = [NSString stringWithFormat: @"INSERT INTO slamDetailsTable (name, gender, phone,email,movie,abt,dob,smiley1,smily2,smily3,image) VALUES (\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",?)", contact.name, contact.gender, contact.phone,contact.email,contact.movies,contact.abtMe,contact.dob,contact.smiley1,contact.smiley2,contact.smiley3];
NSLog(@"query %@",insertSQL);
const char *insert_stmt = [insertSQL UTF8String];
sqlite3_prepare_v2(database, insert_stmt, -1, &statement, NULL);
sqlite3_bind_blob(statement, 1, [contact.imageData bytes], [contact.imageData length], NULL);
if (sqlite3_step(statement) == SQLITE_DONE)
{
NSLog(@"Row added");
}
else {
NSLog(@"Failed to add row");
}
Следующая строка Я добавляю, чтобы получить изображение.
NSData *imageDataFromDb = [[NSData alloc]initWithBytes:sqlite3_column_blob(statement, 11) length:sqlite3_column_int(statement, 11)];
Но. imageDataFromDb показывает 0 байт.
Shoud Я использую qlite3_column_bytes() для обоих случаев? – Shreedhar
@Shreedhar Насколько я могу видеть без тестирования, ваша запись выглядит нормально, это просто, когда вы читаете, вы ошиблись, если вы используете sqlite3_column_int (который попытается преобразовать ваш blob в целое число, независимо от того, который вернется) –
Still imageDataFromDb, показывающий 0 байт. – Shreedhar