将图片转换成二进制写入sqlite
发布时间:2020-12-12 20:08:54 所属栏目:百科 来源:网络整理
导读:先看看网上找的例子代码: 写入: NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);NSString *dataPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@”sqlite.sqlite”];NSData *image=U
先看看网上找的例子代码: 写入: NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString *dataPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@”sqlite.sqlite”]; NSData *image=UIImagePNGRepresentation([UIImage imageNamed:@"01_02.png"]); NSString *aaa=[[NSString alloc]initWithFormat:@”update cards set c_image=? where id=1″]; sqlite3 *database; if (sqlite3_open([dataPath UTF8String],&database) == SQLITE_OK){ sqlite3_stmt * compliedStatement; sqlite3_prepare(database,[aaa UTF8String],-1,&compliedStatement,0); sqlite3_bind_blob(compliedStatement,1,[image bytes],[image length],NULL); int result=sqlite3_step(compliedStatement); if (result==SQLITE_DONE) { } sqlite3_finalize(compliedStatement); } sqlite3_close(database); [aaa release]; 读取: NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,YES); NSString *dataPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@”sqlite.sqlite”]; sqlite3 *database; if (sqlite3_open([dataPath UTF8String],&database) == SQLITE_OK){ const char *sqlStatement=”select c_image from cards where id=1″; sqlite3_stmt *compliedStatement; if(sqlite3_prepare(database,sqlStatement,NULL)==SQLITE_OK) { while (sqlite3_step(compliedStatement)==SQLITE_ROW) { int bytes = sqlite3_column_bytes(compliedStatement,0); const void *value = sqlite3_column_blob(compliedStatement,0); if( value != NULL && bytes != 0 ){ NSData *data = [NSData dataWithBytes:value length:bytes]; UIImage *image=[UIImage imageWithData:data]; [imageView setImage:image]; } else{ } } } sqlite3_finalize(compliedStatement); } sqlite3_close(database); 以上,思路就是:sqlite可以存放二进制的字段(blob),故可将图片转成NSData再写入sqlite。读取则是一个逆向过程。 在这里值得一说的是,自己尝试的时候,数据能写入,但是读出却是null。。搞了一个早上,原来是查询语句写错了。。。要细心啊 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sicily 1346 金明的预算方案 有依赖的背包问题
- 公司项目NODEJS实践0.2[ express, ajax.. ]
- ruby-on-rails-3 – Yaml输出填充!map:ActiveSupport ::
- 语言无关 – 在做TDD时,我应该做多少严格的“做最简单的事情
- ruby-on-rails – Rubymine不定位BUNDLE_PATH指定的宝石
- 宏调用函数
- oracle – 我的桌子半存在.不能放弃它
- ruby-on-rails – 黄瓜和清除:current_user步骤
- 我怎么能克隆/复制某种UIView for iOS?
- c# – 如何使用SvcUtil.exe生成WCF服务