文档章节

iOS FMDB 的二次封装

GLAlanTong
 GLAlanTong
发布于 2016/12/22 17:57
字数 597
阅读 151
收藏 0

一直在做项目,一直都没时间更新博客,当然也一直很少用本地存储,之前有用也是简单的 NSUserDefaults ,最近需要还是简单记录一下 FMDB 的封装吧!

FMDB是一款简洁、易用的封装库。

因此,在这里推荐使用第三方框架FMDB,它是对libsqlite3框架的封装,用起来的步骤与SQLite使用类似,并且它对于多线程的并发操作进行了处理,所以是线程安全的。

FMDB 和 Sqlite 相比

优点: 对多线程的并发操作进行处理,所以是线程安全的; 以OC的方式封装了SQLite的C语言API,使用起来更加的方便; FMDB是轻量级的框架,使用灵活。

缺点: 因为它是OC的语言封装的,只能在ios开发的时候使用,所以在实现跨平台操作的时候存在局限性。

FMDatabase FMDatabase对象就代表一个单独的SQLite数据库,用来执行SQL语句 FMResultSet 使用FMDatabase执行查询后的结果集 FMDatabaseQueue 用于在多线程中执行多个查询或更新,它是线程安全的

1.cocoapods 导入

2.创建一个 DataBase 和一个 Person 类继承于 NSObject

3.创建一个单例,以及数据库增删改查的方法

// person 简单的几个属性

#import @interface Person : NSObject

@property (nonatomic,assign) NSInteger id;

@property (nonatomic,assign) NSInteger age;

@property (nonatomic,strong) NSString *name;

@property (nonatomic,strong) NSString *sex;

@end

// DataBase

@property (nonatomic,strong)FMDatabase *db;

//FMDatabase对象就代表一个单独的SQLite数据库,用来执行SQL语句

+ (instancetype) sharedInstance;

// 插入数据

- (void) insertPerson:(Person *)person;

// static DataBase *data;

+ (instancetype) sharedInstance {

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{ data = [[DataBase alloc] init];

[data createDataBase];

[data createTable]; });

return data;

}

// 创建数据库

- (void) createDataBase {

NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject];

//获取Docment文件路径

NSString *filPath = [doc stringByAppendingPathComponent:@"person.sqlite"];

//数据库文件的路径+名字

self.db = [FMDatabase databaseWithPath:filPath];

//创建数据库

NSLog(@" 保存文件路径 +++ %@",filPath); }

// 创建表

-(void)createTable { if ([self.db open]) {

BOOL result = [self.db executeUpdate:@"CREATE TABLE IF NOT EXISTS person (id integer PRIMARY KEY AUTOINCREMENT,age integer NOT NULL,name text NOT NULL,sex text NOT NULL);"];

if (result) { NSLog(@"创建成功");

}

else{ NSLog(@"创建失败");

}

[self.db close];

}else

{

NSLog(@"数据库打开失败");

} }

// 插入数据

- (void) insertPerson:(Person *)person {

if ([self.db open]) {

BOOL result = [self.db executeUpdate:@"INSERT INTO msg (id,age,name,sex) VALUES (?,?,?,?);", @(person.id),@(person.age),person.name,person.sex];

if (result) { NSLog(@"插入数据成功");

}else{ NSLog(@"插入数据失败");

}

[self.db close]; }else{ NSLog(@"数据库打开失败"); } }

© 著作权归作者所有

GLAlanTong
粉丝 3
博文 21
码字总数 15640
作品 0
广州
程序员
私信 提问
iOS常用的三方库

UI相关:(转载http://www.jianshu.com/p/be0401e35e06) 上拉下拉刷新控件: 链接:MJRefresh 动态启动图: 链接:YFStartView MBProgressHUD: 链接:MBProgressHUD 一个效果很好的弹出下拉框:...

oschina6k
2016/05/11
427
1
源码推荐: SQLite for iOS

虽然iOS支持coredata,它是SQLite的封装,但用惯了SQL的人可能会觉得陌生。其实没有coredata的时候,就是直接操作SQLite的,这儿介绍两个开源项目,就是直接操作SQLite的,我想你们一定会喜欢...

长平狐
2012/08/13
153
0
那些在学习iOS开发前就应该知道的事(part 2)

英文原文:Things I wish I had known before starting iOS development—Part 2 如果你还没读这篇文章的第一部分,请先读完了再来看第二部分。 那些在学习iOS开发前就应该知道的事(part 1)...

TomatosX
2015/06/12
136
0
iOS炫酷动画图案、多种选择器、网络测速、滑动卡片效果等源码

iOS精选源码 对网络进行测速(http://www.code4app.com/thread-31311-1-1.html) 自实现大标题,配合原生骨架屏demo(http://www.code4app.com/thread-31316-1-1.html) 简单方便的pickerVIew记录...

Android爱开源
2018/11/08
83
0
【逐渐提高】ios 代码库 集合类

系统基础库 Category/Util sstoolkit 一套Category类型的库,附带很多自定义控件 功能不错~ BlocksKit 将Block风格带入UIKit和Founcation cocoa-helpers 一些Cocoa的扩展 2年前的工程 Coconu...

创意总监
2014/08/30
259
1

没有更多内容

加载失败,请刷新页面

加载更多

Android -------- kotlin插件神器Json直接生成javaBean

这是一个data class从JSON字符串生成Kotlin 的插件,换句话说,是一个将JSON字符串转换为Kotlin data class(Json到Kotlin)的插件 在使用Kotlin进行开发的时候,我们需要经常对Json数据做解析...

切切歆语
31分钟前
31
0
1、Spring注解开发,第一天

第一天:Spring annotation开发 目录:1、@Configuration与@Bean给容器注册组件 2、@ConponentScan自动扫描注解 一、@Configuration与@Bean给容器注册组件 1、旧版本中创建配置文件和Bean //...

有一个小阿飞
39分钟前
24
0
斯坦福博弈论笔记整理活动的任务已重新划分,望周知

参与方式:https://github.com/apachecn/stanford-game-theory-notes-zh/blob/master/CONTRIBUTING.md 整体进度:https://github.com/apachecn/stanford-game-theory-notes-zh/issues/1 项目......

ApacheCN_飞龙
40分钟前
20
0
使用HTML5 canvas完成的一个网页白板

该代码能够使用canvas对象完成的一个基本功能。仅供大家参考。 <html> <head> <meta http-equiv="Content-Type" contentType="text/html; charset=UTF-8" %> <title>Title</title> <script t......

前端老手
42分钟前
16
0
web漏洞之xss(学习记录)

xss又名跨站脚本攻击,是一种注入攻击,当web应用对用户输入过滤不严格,攻击者写入恶意的脚本代码(HTML、JavaScript)到网页中时,如果用户访问了含有恶意代码的页面,恶意脚本就会被浏览器...

半缘修道半缘君丶
44分钟前
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部