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

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

作者: 拉格纳罗斯 | 来源:发表于2016-12-14 14:56 被阅读0次

    我手里正在开发的项目需要用到数据库对数据进行处理,但是在实现修改已存图片功能的时候发现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更新二进制类型文件

          本文链接:https://www.haomeiwen.com/subject/asyfpttx.html