如何使用带有 NSData 的 sqlite3_column_blob 我需要传递什么参数
在我的 iPhone 应用程序中,我想在 BLOB 数据类型的 sqlite 数据库中检索以 NSData 格式存储的图像
为了恢复它
//select query
NSString *selectQuery = [NSString stringWithFormat:@"select image_column from tbl_image where id=1"];
NSArray *arraySelect = [database executeQuery:selectQuery];
//displaying image
NSData *imageData = [[arraySelect objectAtIndex:0] valueForKey:@"image_column"];
self.img3=[UIImage imageWithData:imageData];
imageView.image=img3;
从上面的代码我无法显示图像
所以请帮助和建议
谢谢
最佳答案
sqlite *database;
sqlite3_stmt *Stmt;
sqlite3_open([[self getDBPath] UTF8String],&database)
- (NSString *) getDBPath
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
return [documentsDir stringByAppendingPathComponent:@"XXX.sqlite"];
}
NSData*thumbnailData;
//插入缩略图数据
NSString *lSQL = [NSString stringWithFormat:@"insert into Table(Thumbnail1) values(?)"];
if(sqlite3_prepare_v2(database, [lSQL UTF8String], -1, &Stmt, NULL) == SQLITE_OK)
{
sqlite3_bind_blob(Stmt, 1,[thumbnailData bytes], [thumbnailData length], NULL);
sqlite3_step(Stmt);
sqlite3_reset(Stmt);
if(Stmt)
sqlite3_finalize(Stmt);
}
//获取缩略图数据
NSString *lSQL = [NSString stringWithFormat:@"select Thumbnail1 from table"];
if(sqlite3_prepare_v2(database, [lSQL UTF8String], -1, &Stmt, NULL) == SQLITE_OK)
{
while(sqlite3_step(Stmt) == SQLITE_ROW)
{
NSString *myColNameNSString = [NSString stringWithFormat:@"%s", sqlite3_column_name(Stmt)];
if ([myColNameNSString isEqualToString:@"Thumbnail1"])
{
thumbnailData = [[NSData alloc] initWithBytes:sqlite3_column_blob(Stmt) length:sqlite3_column_bytes(Stmt)];
}
}
}
关于iphone - 如何将 sqlite3_column_blob 与 NSData 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4725040/