zoukankan      html  css  js  c++  java
  • 李洪强iOS开发之FMDB线程安全的用法

    //

    //  ViewController.m

    //  04 - FMDB线程安全的用法

    //

    //  Created by 李洪强 on 2017/6/6.

    //  Copyright © 2017 李洪强. All rights reserved.

    //

     

    #import "ViewController.h"

    //导入头文件

    #import "FMDB.h"

    @interface ViewController ()

    @property(nonatomic,strong)FMDatabaseQueue *dataBaseQ;

    @end

     

    @implementation ViewController

     

    - (void)viewDidLoad {

        [super viewDidLoad];

     

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

        FMDatabaseQueue *dataBaseQ = [FMDatabaseQueue databaseQueueWithPath:path];

        _dataBaseQ = dataBaseQ;

        [_dataBaseQ inDatabase:^(FMDatabase * _Nonnull db) {

            

            BOOL success = [db open];

            if(success){

                NSLog(@"创建数据库成功");

                //创建表

                NSString *str = @"CREATE TABLE IF NOT EXISTS t_student (id INTEGER PRIMARY KEY AUTOINCREMENT ,name TEXT NOT NULL,score REAL NOT NULL)";

                if([db executeUpdate:str]){

                    

                    NSLog(@"创建表成功!");

                }else{

                    

                    NSLog(@"创建表失败!");

                }

            }else{

                NSLog(@"创建数据库失败");

            }

            

        }];

        

    }

    //增加数据

    - (IBAction)insertData:(UIButton *)sender {

        

        [_dataBaseQ inDatabase:^(FMDatabase * _Nonnull db) {

            for(int i = 0; i < 100 ; i++){

                NSString *strName = [NSString stringWithFormat:@"ming-yuexing-%d",i];

                NSString *sqlStr = [NSString stringWithFormat:@"INSERT INTO t_student (name , score) VALUES ('%@',%.2f)",strName,arc4random_uniform(1000)/10.0];

                BOOL success = [db executeUpdate:sqlStr];

                if(success){

                    NSLog(@"添加成功");

                }else{

                    NSLog(@"添加失败");

                }

            }

     

        }];

        

    }

     

    - (IBAction)selectData:(UIButton *)sender {

        [_dataBaseQ inDatabase:^(FMDatabase * _Nonnull db) {

            NSString *sqlStr = @"SELECT * FROM t_student WHERE score > 60.0 ORDER BY score DESC";

            //执行查询语句

            FMResultSet *set = [db executeQuery:sqlStr];

            while ([set next]) {

                NSString *name = [set stringForColumn:@"name"];

                CGFloat score = [set doubleForColumn:@"score"];

                NSLog(@"name = %@ score = %f",name,score);

            }

        }];

        

    }

     

    /*

     使用FMDBsql的好处:

     线程安全

     公共资源在A使用的时候,B不能修改

     

     

     

     

     

     

     */

     

    @end

  • 相关阅读:
    RequireJS的简单应用
    关于浏览器兼容处理—— 识别IE浏览器
    Div+CSS命名规范
    用CSS开启硬件加速来提高网站性能(转)
    5步解决移动设备上的300ms点击延迟
    全面理解BFC
    纯CSS画的基本图形(矩形、圆形、三角形、多边形、爱心、八卦等)
    Less和Sass编译
    Linux初级知识_03 -- 系统基础命令
    Linux初级知识_02 -- 基础命令
  • 原文地址:https://www.cnblogs.com/LiLihongqiang/p/6952539.html
Copyright © 2011-2022 走看看