ios FMDB 更新二进制图片数据
近做了一个iPhone应用,开发环境使用的实xcode 4.6,同时使用了arc模式开发,为了提高数据库操作的可读性以及可操作性,在数据访问重
抛弃了sqlite的标准操作,我使用的实FMDB--一个对基本sqlite语法进行封装后便于数据访问与C# ado.net有点类似。
使用FMDB很方便的实现了(通过数据库字段名而不是字段索引)数据的读取,插入,更新,删除。但是我在更新图片时发现通过格式化字符(@“%@”,data/*NSData*/)传入的二进制数据更新到数据库后不能显示图片。如果使用的时INSERT 方法能将图片信息正确保存到数据库重,因为在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语句是不可能调用上面的方法的,那么需要怎样才能更新图片等二进制信息呢?(可能对于FMDB我还没完全了解,不知道有没有处理更新二进制数据的方法,我也没时间去找了,于是就在FMDB源码中添加了一个方法,用来保存二进制数据)如下:
- (BOOL)executeUpdate:(NSString*)sql imageData:(NSData*)imageData{
if(!imageData || [imageData length] < 4)
return NO;
sqlite3_stmt *statement;
int success = sqlite3_prepare_v2(_db, [sql UTF8String], -1, &statement, NULL);
if (success != SQLITE_OK) {
//NSLog(@"Error: failed to update picture");
return NO;
}
sqlite3_bind_blob(statement, 1, [imageData bytes], [imageData length], SQLITE_TRANSIENT);
success = sqlite3_step(statement);
sqlite3_finalize(statement);
if (success != SQLITE_DONE) {
//NSLog(@"Error: failed to update picture into the database ");
return NO;
}
return YES;
}
其实就是自己添加了一个标准的sqlite更新方法,希望能给大家带来帮助,如果有更好的方法,不令赐教。
转载于:https://www.cnblogs.com/Boblii/archive/2013/06/04/sqlite_update_binary_data.html
ios FMDB 更新二进制图片数据相关推荐
- C++将二进制图片数据转换为JPG格式
包含头文件#include "opencv2/opencv.hpp" // strPhotoData为string类型,包含二进制图片数据 std::vector<char& ...
- python 获取二进制图片数据及判断得到图片类型
获取二进制图片信息 img_url = 'http://xxxxxxxxxxxxxxxxxxxxxxx' data = requests.get( img_url , headers=headers) ...
- Python OpenCV cv2和二进制图片互转
文章目录 问题描述 代码 参考文献 问题描述 1.png https://img-blog.csdnimg.cn/20200819095325567.png 代码 import cv2 import ...
- 图片管理之更新SKU表数据
更新SKU表数据 1. 获取修改图片的详情信息 点就修改按钮时,我们需要先获取要修改的图片详情信息 接口分析 请求方式: GET /meiduo_admin/skus/images/(?P<pk ...
- iOS五种本地缓存数据方式
iOS五种本地缓存数据方式 iOS本地缓存数据方式有五种:前言 1.直接写文件方式:可以存储的对象有NSString.NSArray.NSDictionary.NSData.NSNumber,数据全部 ...
- 今日头条优化实践: iOS 包大小二进制优化,一行代码减少 60 MB 下载大小
摘要 苹果对 iOS App 大小有严格限制:下载大小超限会阻碍用户在蜂窝网络下载 App ,直接影响新用户转化:可执行文件超限将导致 App 审核被拒,直接影响上架.今日头条探索实践 __TEXT ...
- IOS 绘图 bitmap 滤镜 图片合成
CGSize size = CGSizeMake(800, 800);UIGraphicsBeginImageContextWithOptions(size, NO, 1);//1.获取bitmap上 ...
- android 数据存储怎么保存图片_遇到验证码怎么办?Python编写一个验证码图片数据标注GUI程序!...
做验证码图片的识别,不论是使用传统的ORC技术,还是使用统计机器学习或者是使用深度学习神经网络,都少不了从网络上采集大量相关的验证码图片做数据集样本来进行训练. 采集验证码图片,可以直接使用Pytho ...
- ubuntu mysql 更新_数据库应用(三): Ubuntu 下 MySQL添加、更新与删除数据
添加.更新与删除数据 1.添加数据 命令格式: INSERT|replace INTO 表名(字段名1,字段名2,--) VALUES(值1,值2,--), (值1,值2,--); 需要注意:使用in ...
- 苹果WWDC前瞻之iOS 13更新最受关注;微软发布基于区块链的去中心化身份识别系统;小米成立了新集团质量办公室……...
关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周三次,打卡即read 更快.更全了解泛云圈精彩news g ...
最新文章
- 【leetcode】97. Interleaving String
- 2017第八届中国跨境电商峰会暨展览将在11月底召开!
- 事件选择WSAEventSelect
- The Learning route of GNN
- android自动化(appium)
- python求偏度系数_python pandas库和stats库计算偏度和峰度(附程序)
- cannon linux驱动下载
- 计算机软考高级论文怎么写,计算机软考高级论文
- kl距离 java_相对熵(relative entropy或 Kullback-Leibler divergence,KL距离)的java实现(三)...
- Mac 终端命令自动补齐的办法
- Croe文件在线预览
- 怎么把高清图片导入到CAD图纸文件中?
- 数据处理第3部分:选择行的基本和高级的方法
- webpack5css抽离和压缩
- 让机器耳濡目染:MIT提出跨模态机器学习模型
- 2020-Point attention network for semantic segmentation of 3D point clouds
- Flutter中的ISOlate
- c++ 调用c# dll修改win10锁屏背景
- 图像特征(一)——颜色特征(颜色直方图,颜色矩,颜色集,颜色聚合向量和颜色相关图)
- python练习------京牌车牌摇号