在iOS中保存和从SQLite中检索图像 [英] Saving and retrieving images to and from SQLite in iOS

查看:121
本文介绍了在iOS中保存和从SQLite中检索图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将图像保存到Sqlite中,然后将图像加载到UIImageView中。但它没有得到工作。我不是出了什么问题。这是我正在使用的代码。任何人都可以帮我解决这个问题。

I am trying to save images in to Sqlite and then load image in to an UIImageView. But it's not getting work. I don't what's getting wrong. Here is the code I am using. Can anybody help me to solve this issue.

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


            }
        }
    }
}

任何人都可以通过上述代码指出问题。

Can anyone point out the issue with above code.

提前致谢

推荐答案

- (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);
}

这篇关于在iOS中保存和从SQLite中检索图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆