首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSData UIImageJPEGRepresentation未写入SQLite fmdb

NSData UIImageJPEGRepresentation未写入SQLite fmdb
EN

Stack Overflow用户
提问于 2012-01-24 06:41:40
回答 1查看 3.1K关注 0票数 0

我正在尝试将jpeg转换为nsdata对象,然后使用fmdb包装器将该数据存储在sqlite数据库的blob列中。

例如:

代码语言:javascript
复制
UIImage *img = [UIImage imageNamed:@"house.jpeg" ];
NSData *data = UIImageJPEGRepresentation(img, 1.0);
NSString *query = [NSString stringWithFormat:@"insert into t1 values (null,?)", data ];

其中创建的t1类似于:

代码语言:javascript
复制
[database executeUpdate:@"create table t1(rowid integer primary key autoincrement, house blob)" ];

理想情况下,我可以将数据提取出来,并将其转换回jpeg,如下所示:

代码语言:javascript
复制
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表示,它确实包含。一个已知的问题是否突然出现在任何人身上,或者我只是从外部做了一些错误的事情?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-24 07:48:21

这一行:

代码语言:javascript
复制
NSString *query = [NSString stringWithFormat:@"insert into t1 values (null,?)", data ];

总是会产生这个字符串:

代码语言:javascript
复制
insert into t1 values (null,?)

As -stringWithFormat:不理解您正在尝试将数据绑定到"?“。

看起来FMDatabase有一个-executeQuery:方法,该方法接受数量可变的参数。试着这样做:

代码语言:javascript
复制
[database executeQuery:@"insert into t1 values (null,?)", data];

如果您使用sqlite3手动打开数据库,原始的JPEG数据是否在其中?

警告:我正在访问我大脑中的一个古老的部分,因为我已经有几年没有做数据库了;)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8979683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档