SQLite保存并加载图像iOS

时间:2012-10-26 17:18:23

标签: ios image sqlite

我正在尝试保存图像并将其加载到tableView中,为了保存在我的SQLite文件中,我这样做:

-(void)InsertRecords:(NSData *)pic{
..... // Open my SQLite file
NSString *insertSQL = [NSString stringWithFormat: @"INSERT INTO myMovies (movieImage) VALUES (\"%@\")", pic];
...
const char *insert_stmt = [insertSQL UTF8String];
...
sqlite3_bind_blob(statement, 1, [pic bytes], [pic length], NULL);
...

哪张图片是NSData,我得到了NSLog。并给了我代码。也是为了加载我使用了这段代码:

int length = sqlite3_column_bytes(sqlStatement, 1);
MyMovie.image = [NSData dataWithBytes:sqlite3_column_blob(sqlStatement, 1) length:length];

和NSLoged,它具有类似NSData的结构但具有不同的数据!它完全改变了!难道我做错了什么 ?

2 个答案:

答案 0 :(得分:1)

sqlite3_bind_blob绑定到参数,但您的insert语句实际上没有参数。 (您应该检查其返回值是否有错误。)

您插入语句的内容是格式化为字符串的图片,对于任何非ASCII字节都会中断。

答案 1 :(得分:1)

const char *insert_stmt = [@"INSERT INTO myMovies (movieImage) VALUES (?)" UTF8String];
...
sqlite3_bind_blob(statement, 1, [pic bytes], [pic length], SQLITE_TRANSIENT);