iOS FMDB
FMDB
FMDB概述
什么是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
* 用于在多线程中执行多个查询或更新,它是线程安全的
FMDB打开数据库
通过指定SQLite数据库文件路径来创建FMDatabase对象
FMDatabase *db = [FMDatabase databaseWithPath:path];
if (![db open]) {
NSLog(@"数据库打开失败!");
}
文件路径(path)有三种情况:
* 具体文件路径
* 如果不存在会自动创建
* 空字符串@""
* 会在临时目录创建一个空的数据库
* 当FMDatabase连接关闭时,数据库文件也被删除
* nil
* 会创建一个内存中临时数据库
* 当FMDatabase连接关闭时,数据库会被销毁
执行更新
在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"];
* }
* FMDatabaseQueue
* 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的下载地址: https://github.com/ccgus/fmdb
iOS FMDB的更多相关文章
- iOS FMDB的使用(增,删,改,查,sqlite存取图片)
iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...
- IOS FMDB 获取数据库表和表中的数据
ios开发中,经常会用到数据库sqlite的知识,除了增,删,改,查之外,我们说说如何获取数据库中有多少表和表相关的内容. 前言 跟数据库使用相关的一般的增删改查的语句,这里就不做解释了.在网上有很多 ...
- iOS FMDB 不需要关闭
以前做了一个应用,里面用到了FMDB,进行每一次操作前,都open,完成操作后都close.因为我是参考他们以前的代码.程序初期没发现什么问题,程序完成后,各种卡顿就出现了!即使我是放在新线程里操作的 ...
- iOS FMDB的使用
简介: SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库.iOS SDK 很早就支持了 SQLite,在使用时,只需要加入 libsqlite ...
- iOS | FMDB快速上手
任何的开发都或多或少的接触到数据库,而在IOS中一般使用的是SQLite数据库,这是一个轻量功能较为不错的数据库.而现在用到比较多的第三方数据库操作框架就是FMDB.废话不多说,相信查找到这篇文章的都 ...
- iOS FMDB小试了一下
今天从早上9点,一直在看FMDB,知道中午11:40.我的效率是不是很低下.中间也碰到了几个小bug. 虽然做了一个小demo,但是觉得还比不上在项目中使用中锻炼的多,先暂且一总结. 先下载FMDB的 ...
- iOS FMDB官方使用文档 G-C-D的使用 提高性能(翻译)(转)
由于FMDB是建立在SQLite的之上的,所以你至少也该把这篇文章从头到尾读一遍.与此同时,把SQLite的文档页 http://www.sqlite.org/docs.html 加到你的书签中.自动 ...
- IOS FMDB模糊查询
http://blog.sina.com.cn/s/blog_9630f1310101fx1d.html /查询记录 -(NSArray*)selectitemDream_desc:(JiemengS ...
- iOS FMDB的是使用和注意事项
1.FMDB 默认的使用方法不是线程安全的. 2.Sqlite 默认不支持外键. 3.Sqlite 不支持用 ALTER 关键字给已有表添加外键约束 解决: 1.FMDBDatabaseQueue 2 ...
随机推荐
- Install cv2.so for Anaconda
sudo apt-get install python-opencv cp /usr/lib/python2.7/dist-packages/cv2.so /opt/anaconda/lib/pyth ...
- 通过startup启动tomcat一闪而过的问题
下载了免安装版的tomcat7,在通过startup.bat启动时,控制台一闪而过.记事本讲startup.bat打开,在最后一行加上pause,然后重新双击startup.bat,发现控制台打印的错 ...
- yii2 访问控制
class SiteController extends Controller{ /** * @inheritdoc */ public function behaviors() { return [ ...
- 【00】why集搜客网络爬虫?
与各种大企业相比,大数据对于没有数据资源的个体而言是奢侈品. 然而在“互联网思维”.“互联网+”引领下,我们应当勇于实践和颠覆传统,将数据平民化. 不管你是财经.金融.经管.社科专业的技术小白,正在做 ...
- python笔记之itertools模块
python笔记之itertools模块 itertools模块包含创建有效迭代器的函数,可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(如生 ...
- CodeForces 25E Test KMP
Description Sometimes it is hard to prepare tests for programming problems. Now Bob is preparing tes ...
- SQL Sever 各版本下载 SQL Server 2012下载SQL Server 2008下载SQL Server 2005
SQL Server 2012SQL Server 2012 开发版(DVD)(X64,X86)(中文简体)ed2k://|file|cn_sql_server_2012_developer_edit ...
- mysql trigger 权限的说明
普通用户在创建trigger时会遇到的问题: 1.如果开启了二进制日志,但是用户没有supper 权限:那么他在创建trigger 时会提示设置log_bin_trust_function_creat ...
- linq分组查询
string[] arrStr = { ".com", "www.baidu.com", "www.qq.com", "www.b ...
- LINUX SSH客户端的中文乱码问题
原因在于文件/etc/sysconfig/i18n 这个文件是系统的区域语言设置, i18n是 国际化internationalization的缩写 i和n之间正好18个字母 解释: LANG= ...