다음 코드 나는 DB에 이미지를 저장하기 위해 쓰고 있습니다.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)];
그러나. 0 바이트를 나타내는 imageDataFromDb.
Shoud 나는 두 경우 모두 qlite3_column_bytes()를 사용합니까? – Shreedhar
@Shreedhar 테스트없이 볼 수있는 한 당신의 글은 괜찮아 보입니다. 읽는 중이라면 sqlite3_column_int를 사용하면 길이가 잘못 될 것입니다 (blob을 정수로 변환하려고 시도 할 것입니다. 반환 할 것이다) –
0 바이트를 보여주는 정지 이미지 dataFromDb. – Shreedhar