iOS开发笔记 使用FMDB更新二进制类型文件

我手里正在开发的项目需要用到数据库对数据进行处理,但是在实现修改已存图片功能的时候发现UPDATE 操作之后再读取修改过的二进制数据时返回nil。
经过一段时间研究我发现FMDB中处理INSERT时会调用到下面的方法

- (void)bindObject:(id)obj toColumn:(int)idx inStatement:(sqlite3_stmt*)pStmt { 
     
    if ((!obj) || ((NSNull *)obj == [NSNull null])) { 
        sqlite3_bind_null(pStmt, idx); 
    } 
     
    // FIXME - someday check the return codes on these binds. 
    else if ([obj isKindOfClass:[NSData class]]) { 
        sqlite3_bind_blob(pStmt, idx, [obj bytes], (int)[obj length], SQLITE_STATIC); 
    } ...... 

通过这句标准sqlite语句 才能有效的将二进制信息保存到数据库

sqlite3_bind_blob(pStmt, idx, [obj bytes], (int)[obj length], SQLITE_STATIC);

但是我发现如果使用UPDATE语句并没有调用上面的方法,所以二进制数据更新会出错,由于本人对数据库并没有过多研究并且项目时间较紧,所以最后选择了删除再插入新数据的笨方法来解决问题。

你可能感兴趣的:(iOS开发笔记 使用FMDB更新二进制类型文件)