我正在尝试将图像保存到Sqlite中,然后将图像加载到UIImageView中。但它没有得到工作。我不会出错。这是我正在使用的代码。任何人都可以帮我解决这个问题。
- (void)saveImage {
sqlite3_stmt *compiledStmt;
if(sqlite3_open([dbPath UTF8String], &db)==SQLITE_OK){
const char *insertSQL="insert into Image(Image)values(?)";
if(sqlite3_prepare_v2(db,insertSQL, -1, &compiledStmt, NULL) == SQLITE_OK){
UIImage *image = [UIImage imageNamed:@"farmhouse.png"];
NSData *imageData=UIImagePNGRepresentation(image);
sqlite3_bind_blob(compiledStmt, 1, [imageData bytes], [imageData length], NULL);
sqlite3_step(compiledStmt);
char *errMsg;
sqlite3_exec(db, insertSQL, NULL,compiledStmt,&errMsg);
}
}
}
- (void)showImage {
sqlite3_stmt *compiledStmt;
if(sqlite3_open([dbPath UTF8String], &db)==SQLITE_OK){
const char *insertSQL = "Select Image from Image Where Sl.No = ?";
sqlite3_prepare_v2(db,insertSQL, -1, &compiledStmt, NULL);
if(sqlite3_prepare_v2(db,insertSQL, -1, &compiledStmt, NULL) == SQLITE_OK){
sqlite3_bind_int(compiledStmt, 1, 1);
if(SQLITE_DONE != sqlite3_step(compiledStmt)) {
NSData *data = [[NSData alloc] initWithBytes:sqlite3_column_blob(compiledStmt, 1) length:sqlite3_column_bytes(compiledStmt, 1)];
if(data == nil)
NSLog(@"No image found.");
else
imgView.image = [UIImage imageWithData:data];
}
}
}
}
任何人都可以用上面的代码指出问题。
提前致谢
答案 0 :(得分:9)
- (void)saveImage
{
sqlite3_stmt *compiledStmt;
sqlite3 *db;
if(sqlite3_open([dbPath UTF8String], &db)==SQLITE_OK){
NSString *insertSQL=@"insert into Image(image) VALUES(?)";
if(sqlite3_prepare_v2(db,[insertSQL cStringUsingEncoding:NSUTF8StringEncoding], -1, &compiledStmt, NULL) == SQLITE_OK){
UIImage *image = [UIImage imageNamed:@"vegextra.png"];
NSData *imageData=UIImagePNGRepresentation(image);
sqlite3_bind_blob(compiledStmt, 1, [imageData bytes], [imageData length], SQLITE_TRANSIENT);
if(sqlite3_step(compiledStmt) != SQLITE_DONE ) {
NSLog( @"Error: %s", sqlite3_errmsg(db) );
} else {
NSLog( @"Insert into row id = %lld", (sqlite3_last_insert_rowid(db)));
}
sqlite3_finalize(compiledStmt);
}
}
sqlite3_close(db);
}
- (void)showImage
{
sqlite3_stmt *compiledStmt;
sqlite3 *db;
int i = 1;
if(sqlite3_open([dbPath UTF8String], &db)==SQLITE_OK){
NSString *insertSQL = [NSString stringWithFormat:@"Select image from Image Where Id = %d",i];
if(sqlite3_prepare_v2(db,[insertSQL cStringUsingEncoding:NSUTF8StringEncoding], -1, &compiledStmt, NULL) == SQLITE_OK) {
while(sqlite3_step(compiledStmt) == SQLITE_ROW) {
int length = sqlite3_column_bytes(compiledStmt, 0);
NSData *imageData = [NSData dataWithBytes:sqlite3_column_blob(compiledStmt, 0) length:length];
NSLog(@"Length : %d", [imageData length]);
if(imageData == nil)
NSLog(@"No image found.");
else
imgView.image = [UIImage imageWithData:imageData];
}
}
sqlite3_finalize(compiledStmt);
}
sqlite3_close(db);
}