文档章节

FMDB详解

哥特复心
 哥特复心
发布于 2014/07/30 00:42
字数 760
阅读 8395
收藏 4

什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API

FMDB的优点 使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码 对比苹果自带的Core Data框架,更加轻量级和灵活 提供了多线程安全的数据库操作方法,有效地防止数据混乱

FMDB的github地址 https://github.com/ccgus/fmdb


废话少说,下面来介绍FMDB的使用吧 FMDB有三个主要的类 FMDatabase 一个FMDatabase对象就代表一个单独的SQLite数据库 用来执行SQL语句

FMResultSet 使用FMDatabase执行查询后的结果集

FMDatabaseQueue 用于在多线程中执行多个查询或更新,它是线程安全的


下面来打开数据库 ,一般都需要数据库的路径地址:path 通过指定SQLite数据库文件路径来创建FMDatabase对象 FMDatabase *db = [FMDatabase databaseWithPath:path]; if (![db open]) { NSLog(@"数据库打开失败!"); }

path文件路径有三种情况 1,具体文件路径 如果不存在会自动创建 2,空字符串@"" 会在临时目录创建一个空的数据库 当FMDatabase连接关闭时,数据库文件也被删除 3,nil 会创建一个内存中临时数据库,当FMDatabase连接关闭时,数据库会被销毁


CURD操作: 在FMDB中,除查询以外的所有操作,都称为“更新” create、drop、insert、update、delete等

使用executeUpdate:方法执行更新

  • (BOOL)executeUpdate:(NSString*)sql, ...
  • (BOOL)executeUpdateWithFormat:(NSString*)format, ...
  • (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments

示例 [db executeUpdate:@"UPDATE t_student SET age = ? WHERE name = ?;", @20, @"Jack"]

查询方法

  • (FMResultSet )executeQuery:(NSString)sql, ...
  • (FMResultSet )executeQueryWithFormat:(NSString)format, ...
  • (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)arguments

示例 // 查询数据 FMResultSet *rs = [db executeQuery:@"SELECT * FROM t_student"];

// 遍历结果集 while ([rs next]) { NSString *name = [rs stringForColumn:@"name"]; int age = [rs intForColumn:@"age"]; double score = [rs doubleForColumn:@"score"]; }


多线程管理FMDB FMDatabase这个类是线程不安全的,如果在多个线程中同时使用一个FMDatabase实例,会造成数据混乱等问题

为了保证线程安全,FMDB提供方便快捷的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;

当然,以上都是个人学习FMDB总结出来的,希望对读者有所帮助……

© 著作权归作者所有

上一篇: iOS单例宏
下一篇: IOS中的单例模式
哥特复心
粉丝 109
博文 68
码字总数 40593
作品 0
长沙
高级程序员
私信 提问
FMDB | 实现数据的增删改查

一:介绍 FMDB是一个轻量级的数据库,用于将网络资源存储在本地。 项目中使用 ARC 还是 MRC,对使用 FMDB 都没有任何影响,FMDB 会在编译项目时自动匹配。 FMDB 将 SQLite API 进行了很友好的...

展菲
2018/11/30
0
0
转自:http://blog.devtang.com/blog/2012/04/22/use-fmd

1234567891011 可以看到,使用FMDB后的数据库代码清晰明了,比原生的API优雅多了。另外,FMDB同时兼容ARC和非ARC工程,会自动根据工程配置来调整相关的内存管理代码。 使用说明 该使用说明主...

W浪琴B
2016/05/25
17
0
FMDB和生成二维码

//将所需要的FMDB和生成二维码图片的SDK加入到工程中 //创建一个继承于NSObject的类:DataBase //创建一个继承于NSObject的类:Picture //创建一个ShowviewControllers继承于UIviewcontroller ...

-浪里小白龙
2015/12/24
25
0
iOS开发数据库篇—FMDB简单介绍

iOS开发数据库篇—FMDB简单介绍 一、简单说明 1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API 2.FMDB的优点 使用起来更加面向对象,省去了很多麻烦、冗...

托楚齐坎基基
2015/12/30
203
0
数据库操作(FMDB)

iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便。于是,就出现了一系列将SQLite API进行封装的库,例如FMDB、PlausibleDatabase、sqlitepersistentobjects等,FMDB (https:/...

Snaiper
2016/01/28
115
0

没有更多内容

加载失败,请刷新页面

加载更多

作为一个(IT)程序员!聊天没有话题?试试这十二种技巧

首先呢?我是一名程序员,经常性和同事没话题。 因为每天都会有自己的任务要做,程序员对于其他行业来说;是相对来说比较忙的。你会经常看到程序员在发呆、调试密密麻麻代码、红色报错发呆;...

小英子wep
今天
14
0
【SpringBoot】产生背景及简介

一、SpringBoot介绍 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程,该框架使用了特定的方式来进行配置,从而使开发人员不再需要...

zw965
今天
5
0
简述并发编程分为三个核心问题:分工、同步、互斥。

总的来说,并发编程可以总结为三个核心问题:分工、同步、互斥。 所谓分工指的是如何高效地拆解任务并分配给线程,而同步指的是线程之间如何协作,互斥则是保证同一时刻只允许一个线程访问共...

dust8080
今天
6
0
OSChina 周四乱弹 —— 当你简历注水但还是找到了工作

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @花间小酌 :#今日歌曲推荐# 分享成龙的单曲《男儿当自强》。 《男儿当自强》- 成龙 手机党少年们想听歌,请使劲儿戳(这里) @hxg2016 :刚在...

小小编辑
今天
3.3K
22
靠写代码赚钱的一些门路

作者 @mezod 译者 @josephchang10 如今,通过自己的代码去赚钱变得越来越简单,不过对很多人来说依然还是很难,因为他们不知道有哪些门路。 今天给大家分享一个精彩的 GitHub 库,这个库整理...

高级农民工
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部