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

  • 相关阅读:
    WPF多语言支持
    解决 OpenCV with CUDA 编译提示缺少 nvcuvid.h 的问题
    ios adi ADBannerView 无法修改 宽度
    ios 判断横竖屏的方法
    Core data 数据同步
    常用的sql脚本(陆续更新)
    高晓松:不买房,买梦想
    (转贴)关于多线程执行显示进度条的实例!
    如何快速创建大文件
    利用Adobe Acrobat 7.0 Professional 自带的导出图片的功能(转)
  • 原文地址:https://www.cnblogs.com/LiLihongqiang/p/6952539.html
Copyright © 2011-2022 走看看