码迷,mamicode.com
首页 > 数据库 > 详细

UI18-数据库操作:SQL FMDB

时间:2015-12-15 22:43:40      阅读:390      评论:0      收藏:0      [点我收藏+]

标签:

  (一 )    FMDB 的打开数据库,创建表,查询

技术分享

 

(二)执行语句:

技术分享

(三)存储数据,进行model的归档,反归档,并且实现nscoding协议   一个对象可以转化为data.实质上实现了NScoding协议  一个对象要遵守NSCoding协议,实现协议的方法,才能转成NSData.

技术分享

(四) 实现encoding协议两个方法:

技术分享

(五) 抽离相同代码,使用方法,或者使用Block 调用重复的代码,参数和返回值设置好.

1/外键 约束。

技术分享

(六)  FMDB中---多线程操作

  • 如果要进行海量操作的话,就要用到子线程来加快速度
  • 但是数据库操作海量数据的话,比如说插入100000条数据的话,可以开启多个子线程来操作,但是必须使用同步线程,让多个线程逐一执行,而不致于引起数据库数据混乱。
  • FMDatabaseQueue使用这个类
    //FMDatabaseQueue的创建
    FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:path];
  • 基本操作
    [queue inDatabase:^(FMDatabase *db) {        [db executeUpdate:@"INSERT INTO t_student(name) VALUES (?)", @"Jack"];
        [db executeUpdate:@"INSERT INTO t_student(name) VALUES (?)", @"Rose"];
        [db executeUpdate:@"INSERT INTO t_student(name) VALUES (?)", @"Jim"];
        
        FMResultSet *rs = [db executeQuery:@"select * from t_student"];
        while ([rs next]) {
            // …
        }
    }];
  • 使用事务
    [queue inTransaction:^(FMDatabase *db, BOOL *rollback) {        [db executeUpdate:@"INSERT INTO t_student(name) VALUES (?)", @"Jack"];
        [db executeUpdate:@"INSERT INTO t_student(name) VALUES (?)", @"Rose"];
        [db executeUpdate:@"INSERT INTO t_student(name) VALUES (?)", @"Jim"];
        FMResultSet *rs = [db executeQuery:@"select * from t_student"];
        while ([rs next]) {
            // …
        }
    }];
  • 事务回滚
    • *rollback = YES;

 

UI18-数据库操作:SQL FMDB

标签:

原文地址:http://www.cnblogs.com/ytmaylover/p/5049700.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!