我正在尝试将jpeg转换为nsdata对象,然后使用fmdb包装器将该数据存储在sqlite数据库的blob列中。
例如:
UIImage *img = [UIImage imageNamed:@"house.jpeg" ];
NSData *data = UIImageJPEGRepresentation(img, 1.0);
NSString *query = [NSString stringWithFormat:@"insert into t1 values (null,?)", data ];其中创建的t1类似于:
[database executeUpdate:@"create table t1(rowid integer primary key autoincrement, house blob)" ];理想情况下,我可以将数据提取出来,并将其转换回jpeg,如下所示:
NSString *query = @"select * from t1";
FMResultSet *results = [database executeQuery:query];
while ([ results next ])
{
NSData *picData = [ results dataForColumn:@"house" ];
UIImage *housePhoto = [ UIImage imageWithData:picData ];
}我曾将此类型的模型用于其他数据类型,如字符串等。没有问题。在我目前的尝试中,我使用了这个模型和一个包含字符串列和1个blob列的表。当我写入数据库时,所有的字符串都被很好地存储了,但是当我尝试像上面那样读回blob列时,我得到的blob列返回了null。在写入数据库之前,我仔细检查了一下,我正在使用的NSData不是null,并且确实包含jpeg表示,它确实包含。一个已知的问题是否突然出现在任何人身上,或者我只是从外部做了一些错误的事情?
发布于 2012-01-24 07:48:21
这一行:
NSString *query = [NSString stringWithFormat:@"insert into t1 values (null,?)", data ];总是会产生这个字符串:
insert into t1 values (null,?)As -stringWithFormat:不理解您正在尝试将数据绑定到"?“。
看起来FMDatabase有一个-executeQuery:方法,该方法接受数量可变的参数。试着这样做:
[database executeQuery:@"insert into t1 values (null,?)", data];如果您使用sqlite3手动打开数据库,原始的JPEG数据是否在其中?
警告:我正在访问我大脑中的一个古老的部分,因为我已经有几年没有做数据库了;)
https://stackoverflow.com/questions/8979683
复制相似问题