FMDB将对象放进数据库

首先建立一个HJShop类,实现NSCoding协议

#import <Foundation/Foundation.h>

@interface HJShop : NSObject<NSCoding>

@property (nonatomic, copy)NSString *name;

@property (nonatomic, assign)double price;

@end

#import "HJShop.h"

@implementation HJShop

- (void)encodeWithCoder:(NSCoder *)aCoder

{

[aCoder encodeObject:self.name forKey:@"name"];

[aCoder encodeDouble:self.price forKey:@"price"];

}

- (id)initWithCoder:(NSCoder *)aDecoder

{

if (self = [super init]) {

self.name = [aDecoder decodeObjectForKey:@"name"];

self.price = [aDecoder decodeDoubleForKey:@"price"];

}

return self;

}

- (NSString *)description

{

return [NSString stringWithFormat:@"%@ - %f", self.name, self.price];

}

@end

-----------------------------------------------------

然后使用FMDB框架

//初始化

NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"shop.sqlite"];

self.db = [FMDatabase databaseWithPath:path];

[self.db open];

//创表

[self.db executeUpdate:@"CREATE TABLE IF NOT EXISTS t_shop (id integer PRIMARY KEY, shop blob NOT NULL UNIQUE);"];

[self addShops];

[self readShop];

- (void)addShops

{

HJShop *shop = [[HJShop alloc] init];

shop.name = @"jack";

shop.price = 11.0;

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:shop];

[self.db executeUpdateWithFormat:@"INSERT OR IGNORE INTO t_shop(shop) VALUES (%@);", data];

}

- (void)readShop

{

FMResultSet *set = [self.db executeQuery:@"SELECT * FROM t_shop;"];

while (set.next) {

NSData *data = [set objectForColumnName:@"shop"];

HJShop *shop = [NSKeyedUnarchiver unarchiveObjectWithData:data];

NSLog(@"%@", shop);

}

}

只要把对象encoding成二进制文件,就可以放进SQLite中去了

时间: 2024-10-11 00:40:01

FMDB将对象放进数据库的相关文章

ios 将随意对象存进数据库

要将一个对象存进数据库的blob字段,最好先转为NSData.一个对象要遵守NSCoding协议,实现协议中对应的方法,才干转成NSData. NSData *statusData = [NSKeyedArchiver archivedDataWithRootObject:obj]; [_db executeUpdateWithFormat:@"INSERT INTO t_a(a, idstr) VALUES (%@, %@);", ajson, idstr];//假设将一个json字

ios 将任意对象存进数据库

要将一个对象存进数据库的blob字段,最好先转为NSData,一个对象要遵守NSCoding协议,实现协议中相应的方法,才能转成NSData. NSData *statusData = [NSKeyedArchiver archivedDataWithRootObject:obj]; [_db executeUpdateWithFormat:@"INSERT INTO t_a(a, idstr) VALUES (%@, %@);", ajson, idstr];//如果将一个json字

将任意对象存进数据库

#import "SXViewController.h" #import "SXShop.h" #import "FMDB.h" @interface SXViewController () @property (nonatomic, strong) FMDatabase *db; @end @implementation SXViewController - (void)viewDidLoad { [super viewDidLoad]; [s

利用反射和泛型把Model对象按行储存进数据库以及按行取出然后转换成Model 类实例 MVC网站通用配置项管理

利用反射和泛型把Model对象按行储存进数据库以及按行取出然后转换成Model 类实例 MVC网站通用配置项管理 2018-3-10 15:18 | 发布:Admin | 分类:代码库 | 评论:0 | 浏览:45 | 该类在MVC中可以方便管理配置信息,可以直接把Model储存进数据库或者从数据库去除数据转为Model. 1 何为配置项目? 比如网站的名称,页脚信息,meta中的KeyWord信息等,如果不想硬编码到网页里,就需要使用配置文件进行储存,通常都是储存到数据库中.使用的时候读取出来

使用FMDB框架来加载数据库

1.打开数据库 先要获取沙盒的数据库文件名,并创建数据库文件名,定数据库: @property (nonatomic, strong) FMDatabase *db; // 0.获得沙盒中的数据库文件名 NSString *filename = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"

文字型态的数据适合什么格式存进数据库 ?

文字型态的数据适合什么格式存进数据库 使用数据库保存文字的数据,在数据库中会有以下这些的型态可以设定 char, varchar, nchar, nvarchar 那么到底要用哪种型态比较适合,这些型态之间有何差异呢?? 意义与差异 从这些字眼上来看,都是有char,差别在var与n这两个字眼,那么就先来简单介绍一下这两个字眼代表的意义: var:不定长度→有多长存多长 n:Unicode→无论英文.数字.中文.日文....每个字都占2Byte. 说明一下: char与nchar声明的是固定的长

把文件里的sql文件按从高到下的顺序导进数据库

############# 需求 ############# 依序从上到下把文件里面的每行sql文件导进数据库 ############# 执行方法 ############# sh import_ku.sh 变量1 变量2 变量3 变量1:存储数据库脚本文件名的文件 变量2:数据库用户名 变量3: 数据库密码 代码展示 #!/bin/bash OUTPUT="echo -e" TAILS="\033[0m" GREEN="\033[32m" R

请将你的App签名文件放进保险箱

这是一篇以我自己的实际经历写的一篇文章. 当下移动开发正值火爆,由于门槛低,任何一个程序员都可以比较容易的进入移动开发领域,作为App或者游戏等移动开发者,当你开发完成一个作品后,准备上线时,需要对你的作品进行签名.涉及到签名,那就少不了软件作者的签名文件.这里,可能不少刚刚进入这一领域的开发者很容易忽略签名文件的重要性,导致没有意识保管自己的签名文件,等应用在市场上线后,需要对应用升级更新时,才发现找不到签名文件或者忘记相关密码,这时为时已晚,会导致麻烦. 这种情况在首次接触签名的开发者中并不

php批量上传图片并把图片名放入数据库

    前几天工作中要做这样一个功能,有八百多个系统 生成的会员:给这八百多个系统会员上传图片:然后把图片名放入数据库. 第一步: 第一步肯定是首先把图片上传到对应的图片目录下,直接用框架中已经有的上传类: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 <!--?php                try {                     $upload=new Upload();