iphone - 如何将 sqlite3_column_blob 与 NSData 一起使用

标签 iphone objective-c sqlite

如何使用带有 NSData 的 sqlite3_column_blob 我需要传递什么参数

在我的 iPhone 应用程序中,我想在 BLOB 数据类型的 sqlite 数据库中检索以 NSData 格式存储的图像
为了恢复它

    //select query

    NSString *selectQuery = [NSString stringWithFormat:@"select image_column from tbl_image where id=1"];
    NSArray *arraySelect = [database executeQuery:selectQuery];


    //displaying image

    NSData *imageData = [[arraySelect objectAtIndex:0] valueForKey:@"image_column"];    
    self.img3=[UIImage imageWithData:imageData];
    imageView.image=img3;


从上面的代码我无法显示图像
所以请帮助和建议

谢谢

最佳答案

  sqlite *database;
  sqlite3_stmt *Stmt;
  sqlite3_open([[self getDBPath] UTF8String],&database)
    - (NSString *) getDBPath
     {
       NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
     NSString *documentsDir = [paths objectAtIndex:0];
       return [documentsDir stringByAppendingPathComponent:@"XXX.sqlite"];
      }

  NSData*thumbnailData;

//插入缩略图数据
  NSString *lSQL = [NSString stringWithFormat:@"insert into Table(Thumbnail1) values(?)"];

 if(sqlite3_prepare_v2(database, [lSQL UTF8String], -1, &Stmt, NULL) == SQLITE_OK)
        {
        sqlite3_bind_blob(Stmt, 1,[thumbnailData bytes], [thumbnailData length], NULL);
        sqlite3_step(Stmt);
        sqlite3_reset(Stmt);
        if(Stmt)
            sqlite3_finalize(Stmt);
        }

//获取缩略图数据
 NSString *lSQL = [NSString stringWithFormat:@"select Thumbnail1 from table"];

   if(sqlite3_prepare_v2(database, [lSQL UTF8String], -1, &Stmt, NULL) ==   SQLITE_OK)
   {
     while(sqlite3_step(Stmt) == SQLITE_ROW)
       {
         NSString *myColNameNSString = [NSString stringWithFormat:@"%s", sqlite3_column_name(Stmt)];
         if ([myColNameNSString isEqualToString:@"Thumbnail1"])
             {
                     thumbnailData = [[NSData alloc] initWithBytes:sqlite3_column_blob(Stmt) length:sqlite3_column_bytes(Stmt)];
               }
         }
    }

关于iphone - 如何将 sqlite3_column_blob 与 NSData 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4725040/

相关文章:

iphone - 最后一个 imageView 点击了 UIScrollView

objective-c - 查找哪个 viewController 是父级

iphone - Cell TextLabel 多行不再工作

ios - WKWebview 未检测为移动设备

ios - 如何在 iOS 中的 Xamarin Forms 中获取 Sqlite 连接?

iphone - iPhone上的声音播放通知

iphone - ios国际化字体分配

ios - 为什么 .sqlite 数据库的大小比 Realm 小很多?

iphone - NSTimeInterval 到 HH :mm:ss?

android - Sqlite 查询以查找特定列字段值位于输入字符串中的所有行