sqlite数据库插入和读取图片数据 (for ios)
2012-12-17 08:52
369 查看
在iOS下用sqlite数据库存储图片,先把你的图片转换成 NSData 形式,然后在数据库添加一行 blob 数据
假定数据库中存在表 test_table(name,image), 下面代码将图片文件test.png的二进制数据写到sqlite数据库:
例2:
存储图片:
假定数据库中存在表 test_table(name,image), 下面代码将图片文件test.png的二进制数据写到sqlite数据库:
char *name = "test"; NSString * nameString = [NSString stringWithCString:name encoding:NSUTF8StringEncoding]; NSString * filePath = [[NSBundle mainBundle] pathForResource:nameString ofType:@"png"]; if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) { NSData * imgData = UIImagePNGRepresentation([UIImage imageWithContentsOfFile:filePath]); const char * sequel = "insert into test_table(name,image) values(?,?)"; sqlite3_stmt * update; if (sqlite3_prepare_v2(database, sequel, -1, &update, NULL) == SQLITE_OK) { sqlite3_bind_text(update, 1, name, -1, NULL); sqlite3_bind_blob(update, 2, [imgData bytes], [imgData length], NULL); if( sqlite3_step(update) == SQLITE_DONE) { NSLog(@"已经写入数据"); } sqlite3_finalize(update); } } else { NSLog(@"文件不存在"); } 下面代码从数据库中读取图片二进制数据,然后显示图片: const char * sequel = "select image from test_table where name=?"; sqlite3_stmt * getimg; if (sqlite3_prepare_v2(database, sequel, -1, &getimg, NULL) == SQLITE_OK) { char *name = "test"; sqlite3_bind_text(update, 1, name, -1, NULL); if(sqlite3_step(getimg) == SQLITE_ROW) { int bytes = sqlite3_column_bytes(getimg, 0); Byte * value = (Byte*)sqlite3_column_blob(getimg, 1); if (bytes !=0 && value != NULL) { NSData * data = [NSData dataWithBytes:value length:bytes]; UIImage * img = [UIImage imageWithData:data]; UIImageView * aview =[[UIImageView alloc] initWithFrame: CGRectMake(0.0, 0.0, IMAGE_WIDTH, IMAGE_HEIGHT)]; aview.image = img; [self.view addSubview:aview]; [aview release]; } } sqlite3_finalize(getimg); }
例2:
存储图片:
// Save Small Image Data by given main url - (void) SaveImagesToSql: (NSData*) imgData :(NSString*) mainUrl { NSLog( @"\n*****Save image to SQLite*****\n" ); const char* sqliteQuery = "INSERT INTO IMAGES (URL, IMAGE) VALUES (?, ?)"; sqlite3_stmt* statement; if( sqlite3_prepare_v2(articlesDB, sqliteQuery, -1, &statement, NULL) == SQLITE_OK ) { sqlite3_bind_text(statement, 1, [mainUrl UTF8String], -1, SQLITE_TRANSIENT); sqlite3_bind_blob(statement, 2, [imgData bytes], [imgData length], SQLITE_TRANSIENT); sqlite3_step(statement); } else NSLog( @"SaveBody: Failed from sqlite3_prepare_v2. Error is: %s", sqlite3_errmsg(articlesDB) ); // Finalize and close database. sqlite3_finalize(statement); }读取图片:
// Load images from data base with given image url - (NSData*) LoadImagesFromSql: (NSString*) imageLink { NSData* data = nil; NSString* sqliteQuery = [NSString stringWithFormat:@"SELECT IMAGE FROM IMAGES WHERE URL = '%@'", imageLink]; sqlite3_stmt* statement; if( sqlite3_prepare_v2(articlesDB, [sqliteQuery UTF8String], -1, &statement, NULL) == SQLITE_OK ) { if( sqlite3_step(statement) == SQLITE_ROW ) { int length = sqlite3_column_bytes(statement, 0); data = [NSData dataWithBytes:sqlite3_column_blob(statement, 0) length:length]; } } // Finalize and close database. sqlite3_finalize(statement); return data; }
相关文章推荐
- 向sqlite数据库插入和读取图片数据 (for ios)
- iOS sqlite数据库插入和读取图片数据
- ios 向sqlite数据库插入和读取图片数据
- 在Sqlite数据库插入和读取图片数据
- 在Sqlite数据库插入和读取图片数据
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- 使用JDBC和Hibernate在oracle中插入和读取Blob数据的图片的java程序
- 往sqlite中写入图片二进制数据及读取源码 for iphone
- php插入图片到sqlite数据库中、从sqlite数据库中读取图片
- ios sqlite中写入图片二进制数据及读取
- iOS 怎样读取PDF里面的表 然后往里面插入数据?
- sqlite中写入图片二进制数据及读取源码 for iphone
- sqlite中写入图片二进制数据及读取源码 for iphone
- [IOS]网络操作+图片的下载和读取+json数据读取
- 往sqlite中写入图片二进制数据及读取源码 for iphone
- iOS中实现plist中读取数据实现Cell的显示(字典转模型,实现按序分组)修改图片的尺寸
- iOS开发:使用FMDB插入单引号值" ' "数据到SQLite数据库中
- [IOS]网络操作+图片的下载和读取+json数据读取
- ios sqlite中写入图片二进制数据及读取
- iOS 【读取图片数据 UIImageJPEGRepresentation和UIImagePNGRepresentation】