加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

slite 存储图片

发布时间:2020-12-13 00:22:59 所属栏目:百科 来源:网络整理
导读:NSData * UIImageJPEGRepresentation ( UIImage *image, CGFloat compressionQuality ); 复制代码 和 NSData * UIImagePNGRepresentation ( UIImage *image ); 复制代码 写 到这里大家可能已经明白怎样将图片导进数据库了吧!!数据库中存放图片声音等都是 B
  1. NSData * UIImageJPEGRepresentation (
  2. UIImage *image,
  3. CGFloat compressionQuality
  4. );
复制代码

  1. NSData * UIImagePNGRepresentation (
  2. UIImage *image
  3. );
复制代码

写 到这里大家可能已经明白怎样将图片导进数据库了吧!!数据库中存放图片声音等都是
BLOB类型的,什么是BLOB类型呢?这个暂时先不在这里讲解了
从上个方法中得到的NSData类型就是我们要转换的基本格式了。废话不多说,且看代码:
/*
链接数据库部分略落
*/
创建数据表(就建立个简单的表格)

  1. char *error;
  2. NSString *createSQLite = @"create table if not exists LOVE(image_ID integer primary key,image BLOB)";//primary key 可不要漏掉
  3. if(sqlite3_exec(database,[createSQLite UTF8String],NULL,&error)!=SQLITE_OK)
  4. {
  5. sqlite3_close(database);//出错误了??那查看一下是否链接好数据库了··
  6. }
复制代码

好 了数据库我们已经建好了,接下来就是我们开始练兵的时候了,且看----------

××××××××××××××××××××××××××××××××××××××××××××××××××××

  1. -(IBAction)insertImageToDB
  2. {
  3. NSData *data = UIImagePNGRepresentation([UIImage imageNamed:@"back.png"]);
  4. // 还记得这个可爱的方法吗??哈
  5. NSUInteger length = [data length];//这个法参数用来计算data数据的大小的 为什么?待会解释
  6. sqlite3_stmt *statement;//
  7. NSString *query = [[NSString alloc]
  8. initWithString:@"INSERT OR REPLACE INTO LOVE(IMAGE) VALUES (?)"];
  9. if(sqlite3_prepare_v2(database,[query UTF8String],-1,&statement,NULL)!=SQLITE_OK)
  10. {
  11. //出错误了 去查看一下吧
  12. NSLog(@"I have read an error");
  13. return;
  14. }
  15. sqlite3_bind_blob(statement,1,[data bytes],length,SQLITE_TRANSIENT);//这里对应query里的问号,第几个问号,里面的参数就填几···
  16. sqlite3_step(statement);
  17. sqlite3_finalize(statement);
  18. sqlite3_close(database);// 忘了关闭你就白存了
  19. }
复制代码

×××××××××××××××××××××××××××××××××××××××××××××××××××××
// 就这么简单,不是吗??下面来读取一下看看我们的图片是不是乖乖的在数据库里了吧!·!!

×××××××××××××××××××××××××××××××××××××××××××××××××××××

  1. -(IBAction)readDBImage
  2. {
  3. NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:kDefaultDbPath];
  4. if (sqlite3_open([defaultDBPath UTF8String],&database) != SQLITE_OK) {
  5. sqlite3_close(database);
  6. NSAssert1(0,@"Failed to open database with message '%s'.",sqlite3_errmsg(database));
  7. }
  8. else
  9. {
  10. NSLog(@"Open Data DB Successful");
  11. } //打开数据库kDefaultDbPath 这个是你的数据库名字
  12. NSString *query = @"select IMAGE from LOVE";
  13. sqlite3_stmt *statement;
  14. if(sqlite3_prepare_v2(database,nil) == SQLITE_OK)
  15. {
  16. NSLog(@"pass");
  17. while(sqlite3_step(statement) == SQLITE_ROW)
  18. {
  19. NSData *imageData;
  20. const void *test = sqlite3_column_blob(statement,0);
  21. int size = sqlite3_column_bytes(statement,0);
  22. imageData = [NSData dataWithBytes:test length:size];
  23. CFShow(imageData);
  24. UIImage *image = [UIImage imageWithData:imageData];
  25. [imageView setImage:image]; //显示你的Image
  26. break;
  27. }
  28. sqlite3_finalize(statement);
  29. }
  30. sqlite3_close(database);
  31. }
http://hi.baidu.com/492437598/blog/item/3fe1065a2da4d1262934f000.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读