李洪强iOS开发之FMDB线程安全的用法

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #1e9421 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000; min-height: 21.0px }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c81b13 }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #1e9421 }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #822d0f }
p.p6 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #3c828b }
p.p7 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c42275 }
p.p8 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
p.p9 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #3e1e81 }
p.p10 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #1e9421; min-height: 21.0px }
span.s1 { }
span.s2 { font: 18.0px "PingFang SC" }
span.s3 { color: #822d0f }
span.s4 { font: 18.0px Menlo }
span.s5 { color: #c81b13 }
span.s6 { color: #c42275 }
span.s7 { color: #000000 }
span.s8 { color: #3c828b }
span.s9 { color: #6122ae }
span.s10 { color: #294c50 }
span.s11 { color: #539aa4 }
span.s12 { color: #3e1e81 }
span.s13 { font: 18.0px "PingFang SC"; color: #c81b13 }
span.s14 { color: #1e9421 }
span.s15 { font: 18.0px "PingFang SC"; color: #1e9421 }
span.s16 { color: #0435ff }
span.s17 { color: #703daa }

//

//  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);

}

}];

}

/*

使用FMDB比sql的好处:

线程安全

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

*/

@end

时间: 2024-10-07 11:36:41

李洪强iOS开发之FMDB线程安全的用法的相关文章

李洪强iOS开发之RunLoop的原理和核心机制

李洪强iOS开发之RunLoop的原理和核心机制 搞iOS之后一直没有深入研究过RunLoop,非常的惭愧.刚好前一阵子负责性能优化项目,需要利用RunLoop做性能优化和性能检测,趁着这个机会深入研究了RunLoop的原理和特性. RunLoop的定义 当有持续的异步任务需求时,我们会创建一个独立的生命周期可控的线程.RunLoop就是控制线程生命周期并接收事件进行处理的机制. RunLoop是iOS事件响应与任务处理最核心的机制,它贯穿iOS整个系统. Foundation: NSRunLo

李洪强IOS开发之-iOS经典面试题

李洪强IOS开发之-iOS经典面试题 写这篇文章的目的是因为前两天同学想应聘iOS开发,从网上找了iOS面试题和答案让我帮忙看看.我扫了一眼,倒吸了一口冷气,仔细一看,气的发抖.整篇题目30多个没有一个答案是对的,总结这篇面试题的作者对iOS机制根本就是一知半解就敢发到网上,不管有心还是无心都是坑害新人.所以在这里总结一下这几年面试别人和被别人面试遇到的一些我认为比较好的基础题目分享给大家,进阶题目在后续补充.我的理解如果有错漏请一定指出,非常感谢! 从12年开始做面试官到现在已经三个年头了,这

李洪强iOS开发之Block和协议

李洪强iOS开发之Block和协议 OC语言BLOCK和协议 一.BOLCK (一)简介 BLOCK是什么?苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行. BOLCK和函数的相似性:(1)可以保存代码(2)有返回值(3)有形参(4)调用方式一样. 标识符 ^ (二)基本使用 (1)定义BLOCK变量 Int (^SumBlock)(int,int);//有参数,返回值类型为int Void (^MyBlock)()://无参数,返回值类型

李洪强iOS开发之iOS社区收集

李洪强iOS开发之iOS社区收集 项目 简述 github 全球最大的代码仓库,无论是iOS开发还是Android开发没有人不知道这个网站,它也是一个社区,你可以去follow(关注)某些人或公司. cocoachina 号称全球最热的苹果开发社区,这里有很多关于iOS,mac开发的相关文章,值得收藏的中午社区 Swift 语言指南 这份指南汇集了Swift语言主流学习资源,并以开发者的视角整理编排,虽然看上去只是一篇博文,但是作者每周都在更新,从这个角度来说,我把它归类到社区中. swiftk

李洪强iOS开发之iOS学习方法收集

李洪强iOS开发之iOS学习方法收集 在这里收集一些iOS学习方法,会不断更新 项目 简述 日期 一年多iOS开发总结 作者总结了自己一年多的iOS学习经验,对于iOS初学者来说很多地方是可以借鉴的 2015.01.07 iOS面试基础知识36题 作者收集了iOS基础比较常见的面试题 2015.04.01

李洪强iOS开发之iOS技术博客

李洪强iOS开发之iOS技术博客 注意:访问博客请直接点击博客,不要点击后面的RSS地址 博客地址 RSS地址 南峰子的技术博客   剑尖博客   图拉鼎   Henry Lee   Dev Talking(推荐)   岁寒   破船之家 http://beyondvincent.com/atom.xml NSHipster http://nshipster.cn/feed.xml Limboy 无网不剩 http://feeds.feedburner.com/lzyy 唐巧的技术博客(推荐)

李洪强IOS开发之iOS好项目收集

李洪强IOS开发之iOS好项目收集 在这里收集一些最近出现的比较实用好玩的框架或者项目,会不断更新 项目 简述 日期 SCTableViewCell 类似与QQ侧滑删除Cell的Demo 201501018 JHChainableAnimations 可读性好使用方便的动画库,语法类似与Masonry,使用链式编程 20150506 awesome-ios-chart iOS平台下的各种图表组件 20150513 DevArticles iOS Animation 主流炫酷动画框架(特效)收集整

李洪强iOS开发之iOS好文章收集

李洪强iOS开发之iOS好文章收集 该文收集朋友们转发或自己的写的技术文章,如果你也有相关的好文章,欢迎留言,当好文章多的时候,我会对这些好文章进行分门别类 文章 简述 日期 直播服务配置 使用 nginx 和 rtmp 插件搭建视频直播和点播服务器 2015-05-12 20:13:00 iOS9适配技巧 图iOS9适配新技巧 2015-09-29 09:01 TextKit分页效果 图文混排 2015年6月1日 iPhone 6 / 6 Plus 设计·适配方案 屏幕适配 2014-11-2

李洪强iOS开发之OC[016]C语言关键字

// //  main.m //  04 - C语言关键字 // //  Created by vic fan on 16/7/12. //  Copyright © 2016年 李洪强. All rights reserved. // C语言关键字 A -  数据相关 1) 基本数据类型(5个) void    空   没有的意思 char    字符 占 1个字节(char的本质也是数字) int     整数  4个字节 float   浮点数  (小数点)保留7位有效数字 double