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语句并没有调用上面的方法,所以二进制数据更新会出错,由于本人对数据库并没有过多研究并且项目时间较紧,所以最后选择了删除再插入新数据的笨方法来解决问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容