分享

IOS SQLite3 存储和读取图片

 现在决定明天 2014-03-06

存储图片

  1. // Save Small Image Data by given main url   
  2. - (void) SaveImagesToSql: (NSData*) imgData :(NSString*) mainUrl  
  3. {  
  4.     NSLog( @"\n*****Save image to SQLite*****\n" );  
  5.   
  6.     const char* sqliteQuery = "INSERT INTO IMAGES (URL, IMAGE) VALUES (?, ?)";  
  7.     sqlite3_stmt* statement;  
  8.   
  9.     if( sqlite3_prepare_v2(articlesDB, sqliteQuery, -1, &statement, NULL) == SQLITE_OK )  
  10.     {  
  11.         sqlite3_bind_text(statement, 1, [mainUrl UTF8String], -1, SQLITE_TRANSIENT);  
  12.         sqlite3_bind_blob(statement, 2, [imgData bytes], [imgData length], SQLITE_TRANSIENT);  
  13.         sqlite3_step(statement);  
  14.     }  
  15.     else NSLog( @"SaveBody: Failed from sqlite3_prepare_v2. Error is:  %s", sqlite3_errmsg(articlesDB) );  
  16.   
  17.     // Finalize and close database.  
  18.     sqlite3_finalize(statement);  
  19. }  


 

读取图片

  1. // Load images from data base with given image url   
  2. - (NSData*) LoadImagesFromSql: (NSString*) imageLink  
  3. {  
  4.     NSData* data = nil;  
  5.     NSString* sqliteQuery = [NSString stringWithFormat:@"SELECT IMAGE FROM IMAGES WHERE URL = '%@'", imageLink];      
  6.     sqlite3_stmt* statement;  
  7.   
  8.     if( sqlite3_prepare_v2(articlesDB, [sqliteQuery UTF8String], -1, &statement, NULL) == SQLITE_OK )  
  9.     {  
  10.         if( sqlite3_step(statement) == SQLITE_ROW )  
  11.         {  
  12.             int length = sqlite3_column_bytes(statement, 0);  
  13.             data       = [NSData dataWithBytes:sqlite3_column_blob(statement, 0) length:length];  
  14.         }  
  15.     }  
  16.   
  17.     // Finalize and close database.  
  18.     sqlite3_finalize(statement);  
  19.   
  20.     return data;  
  21.   
  22. }             


 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多