开发者

How to use sqlite3_column_blob with NSData

How to use sqlite3_column_blob with NSData what parameter I need to pass

In my iPhone App I want to retrive image stored in NSData format in sqlite database in B开发者_如何学编程LOB datatype for retriving it

    //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;

from above code I am not able to display image so please help and suggest

thanks


  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;

//Inserting Thumbnail Data

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

//Fetching Thumbnail Data

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


Hey, I don't what are your project requirements. I would not use BLOB unless it's required to.

reason is you are storing image file into sqlite, everytime you have to use the file you have access the database, process the file and use. which will be fairly easy and simple in terms of number of threads you are running if you use images directly form the disk. give a thought about it. Good Luck

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜