概述在iOS下用sqlite
数据库存储图片,先把你的图片转换成 NSData 形式,然后在数据库添加一行 blob 数据 假定数据库中存在表 test_table(name,image), 下面代码将图片文件test.png的二进制数据写到sqlite数据库: 01 char *name = "test"; 02 NSString * nameString = [NSString stringWith
在iOS下用sqlite数据库存储图片,先把你的图片转换成 NSData 形式,然后在数据库添加一行 blob 数据
假定数据库中存在表 test_table(name,image),下面代码将图片文件test.png的二进制数据写到sqlite数据库:
@H_301_18@01
char *name = "test" ; |
@H_301_18@02
Nsstring * nameString = [Nsstring stringWithCString:name enCoding:NSUTF8StringEnCoding]; |
@H_301_18@03
Nsstring * filePath = [[NSBundle mainBundle] pathForResource:nameString ofType:@ "png" ]; |
@H_301_18@04
if ([[NSfileManager defaultManager] fileExistsAtPath:filePath]) |
@H_301_18@06
NSData * imgData = UIImagePNGRepresentation([UIImage imageWithContentsOffile:filePath]); |
@H_301_18@07
const char * sequel = "insert into test_table(name,image) values(?,?)" ; |
@H_301_18@09
sqlite3_stmt * update; |
@H_301_18@10
if (sqlite3_prepare_v2(database,sequel,-1,&update,NulL) == sqlITE_OK) |
@H_301_18@12
sqlite3_bind_text(update,1,name,NulL); |
@H_301_18@13
sqlite3_bind_blob(update,2,[imgData bytes],[imgData length],NulL); |
@H_301_18@14
if ( sqlite3_step(update) == sqlITE_DONE) |
@H_301_18@16
NSLog(@ "已经写入数据" ); |
@H_301_18@18
sqlite3_finalize(update); |
@H_301_18@23
NSLog(@ "文件不存在" ); |
@H_301_18@26
下面代码从数据库中读取图片二进制数据,然后显示图片: |
@H_301_18@27
const char * sequel = "select image from test_table where name=?" ; |
@H_301_18@28
sqlite3_stmt * getimg; |
@H_301_18@29
if (sqlite3_prepare_v2(database,&getimg,NulL) == sqlITE_OK) |
@H_301_18@31
char *name = "test" ; |
@H_301_18@32
sqlite3_bind_text(update,NulL); |
@H_301_18@33
if (sqlite3_step(getimg) == sqlITE_ROW) |
@H_301_18@35
int bytes = sqlite3_column_bytes(getimg,0); |
@H_301_18@36
Byte * value = (Byte*)sqlite3_column_blob(getimg,1); |
@H_301_18@37
if (bytes !=0 && value != NulL) |
@H_301_18@39
NSData * data = [NSData dataWithBytes:value length:bytes]; |
@H_301_18@40
UIImage * img = [UIImage imageWithData:data]; |
@H_301_18@41
UIImageVIEw * avIEw =[[UIImageVIEw alloc] initWithFrame: |
@H_301_18@42
CGRectMake(0.0,0.0,IMAGE_WIDTH,IMAGE_HEIGHT)]; |
@H_301_18@43
avIEw.image = img; |
@H_301_18@44
[self.vIEw addSubvIEw:avIEw]; |
@H_301_18@45
[avIEw release]; |
@H_301_18@48
sqlite3_finalize(getimg); |
总结
以上是内存溢出为你收集整理的sqlite数据库插入和读取图片数据 (for ios)全部内容,希望文章能够帮你解决sqlite数据库插入和读取图片数据 (for ios)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
评论列表(0条)