iOS SQLite存储blob类型的data数据
来源:互联网 发布:南方全站仪pts数据 编辑:程序博客网 时间:2024/04/30 13:49
今天遇到一个问题,把NSData类型存到数据库,但是之前没有这么干过,所以也不知道是怎么操作的。
之前往数据库里存的都是int、 NSString这种类型,对应的就是C语言的int 、和字符串。
NSString 是OC的对象类型,想存数据库,必须先转一下再存,例如:[str UTF8String] 这样转成const char* 就可以赋值了
但是NSDate对应的是什么类型呢?
NSDate 对应的是我们平时很不常用的 bytes 类型,我一时没记起来,这不赖我········
好吧,我还是觉得代码比较直接,上代码
插入的时候:
#program -mark 这是插入的方法,参数为两个字段的内容,第二个是data类型+ (BOOL)insertClassification:(NSString *)Classification AndData:(NSData *)data{ //插入语句 NSString *insertClassification=@"insert into Commodity(CommodityClassification,JSON) values(?,?)"; sqlite3 *db=[self openDB]; sqlite3_stmt *stmt=nil; int stat=sqlite3_prepare_v2(db, [insertClassification UTF8String], -1, &stmt, nil); if (stat==SQLITE_OK) { sqlite3_bind_text(stmt, 1, [Classification UTF8String], -1, NULL); // 用data 调用bytes函数,并且获得长度。这里的长度一定要设置,不然的话数据会不正确 sqlite3_bind_blob(stmt, 2, [data bytes], (int)[data length] , NULL); //好了,这一步就绑定了,是不是也挺简单的 int result = sqlite3_step(stmt); if (result==SQLITE_DONE) { //进到该if语句说明已经添加成功 return YES; } } return NO;}
查询的时候:
+ (NSMutableDictionary *)selectClassification:(NSString *)Classification{ NSMutableDictionary *dic=[[NSMutableDictionary alloc]init]; NSString *selectClassification=@"select * from Commodity where CommodityClassification like ?"; sqlite3 *db=[self openDB]; sqlite3_stmt *stmt=nil; int stat=sqlite3_prepare_v2(db, [selectClassification UTF8String], -1, &stmt, nil); if (stat==SQLITE_OK) { sqlite3_bind_text(stmt, 1, [Classification UTF8String], -1, nil); while (SQLITE_ROW==sqlite3_step(stmt)) { //得到记录中的BLOB字段 const void * test = sqlite3_column_blob(stmt, 2); //得到字段中数据的长度 int size = sqlite3_column_bytes(stmt, 2); //根据字节和长度得到data对象 NSData *data = [[NSData alloc]initWithBytes:test length:size]; [dic setObject:data forKey:Classification]; } } return dic;}
就是这样,data可以是任何类型的数据,可以存图片视频、音频等等,这样也是蛮灵活的
0 0
- iOS SQLite存储blob类型的data数据
- 利用Sqlite数据库的blob类型存储自定义的数据类型
- 利用Sqlite数据库的blob类型存储自定义的数据类型
- MySQL存储 BLOB 类型数据
- 在C#中存储Blob类型的数据,
- 收藏一个关于数据库存储BLOB类型数据的方法
- xutils3 对byte[] 、Blob类型数据的存储
- 利用Sqlite数据库的blob类型存储自定义的数据类型(小寿转载)
- System.Data.OracleClient调用带blob等大字段类型参数的存储过程
- IOS NSData/NSArray数组存储为SQLite blob
- iOS数据存储--SQLite数据库
- iOS-数据存储SQLite介绍
- oralce 中 blob类型的存储
- MySQL的BLOB类型存储大小调整
- SQLite 的数据存储
- iOS 数据存储 - Core Data
- iOS数据存储--Core Data
- QT Sqlite BLOB类型操作
- BIOS和CMOS的联系和区别
- 黑马程序员---java数组
- 【高质量代码】如何写出更高质量的C/C++代码(2):函数设计
- WP8 真机调试出现 指定的通信资源(端口)已由另一个应用程序使用 的解决方法
- 行存储和列存储--大数据应用选择
- iOS SQLite存储blob类型的data数据
- Clappr——开源的Web视频播放器
- linux 多核启动
- SEL数据类型的简单知识点——和方法有关
- C语言猜数字小游戏
- java log4j日志的记录
- 稳定排序(sort)
- SRIO高速互联
- transaction on mysql的一个有用网址