将任意对象存进数据库

#import "SXViewController.h"
#import "SXShop.h"
#import "FMDB.h"

@interface SXViewController ()
@property (nonatomic, strong) FMDatabase *db;
@end

@implementation SXViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self setup];

    [self readShops];
}

- (void)setup
{
    // 初始化
    NSString *path = @"/Users/apple/Desktop/shops.data";
    self.db = [FMDatabase databaseWithPath:path];
    [self.db open];

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

- (void)readShops
{
    FMResultSet *set = [self.db executeQuery:@"SELECT * FROM t_shop LIMIT 10,10;"];
    while (set.next) {
        NSData *data = [set objectForColumnName:@"shop"];
        SXShop *shop = [NSKeyedUnarchiver unarchiveObjectWithData:data];
        NSLog(@"%@", shop);
    }

}

- (void)addShops
{

    for (int i = 0; i<100; i++) {
        SXShop *shop = [[SXShop alloc] init];
        shop.name = [NSString stringWithFormat:@"商品--%d", i];
        shop.price = arc4random() % 10000;

        NSData *data = [NSKeyedArchiver archivedDataWithRootObject:shop];
        [self.db executeUpdateWithFormat:@"INSERT INTO t_shop(shop) VALUES (%@);", data];
    }
}

@end
时间: 2024-08-25 04:13:01

将任意对象存进数据库的相关文章

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字

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

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

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

基于ThinkPHP框架小程序获取微信用户信息并将存进数据库

场景描述:在微信小程序中,我们可能用到很多种登陆方式,例如用手机作为标识登陆亦或者用微信信息作为标识登陆(但这写都要看你的项目需要),在这里我说一下如何使用微信信息作为标识登陆. 编程思路:分三步走,第一步微信信息获取发送给后台->第二步解密微信信息验证数据库->登陆成功保存缓存并且更新token 小程序前端处理 1 //调用登录接口,获取 code 2 wx.login({ 3 success: function (res) { 4 //微信js_code 5 that.setData({

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

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

(一一五)利用NSKeyedArchiver实现任意对象转为二进制

[应用背景] 在数据库中存储数据时,如果对象过于复杂,又不必要创建复杂的表,可以直接把整个对象转化为二进制存入数据库字段,然后取出后再还原即可. [实现方法] 在PHP中,使用序列化和反序列化可以实现这样的功能. 在OC中,使用NSKeyedArchiver和NSKedUnarchiver可以实现对象转二进制和二进制转对象,要实现转化,必须遵循NSCoding协议,并且实现encodeWithCoder方法用来转化数据为二进制,实现initWithCoder实现二进制数据还原成类对象,OC的常见

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

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

Js中找任意对象的原型方法及改造原型

Java中有运行时类型识别,js可以很方便的模仿这个特性,因为所有js对象都有一个属性constructor(构造器),表示这个对象的构造方法,原型与构造方法同名,所以可以通过这儿知道任意对象的原型名称.具体可以看代码(这里简单的封装了): function runToChain(obj){ var chainName=obj.constructor.name; return chainName; } 知道对象原型后,可以通过原型的prototype属性为原型添加可改造属性和方法,改造原型.