iOS数据库操作之FMDB

SQLite一种轻量级关系数据库,在嵌入式系统中使用比较广泛。

  在iOS中使用SQLite需要添加库libsqlite3.0.dylib,并引入头文件#import <sqlite3.h>

  FMDB对sqlit接口进行了高级封装,使用上更加友好简洁。

  https://github.com/ccgus/fmdb

  FMDB包含以下文件:


FMDatabase.h

FMDatabase.m

FMDatabaseAdditions.h

FMDatabaseAdditions.m

FMDatabasePool.h

FMDatabasePool.m

FMDatabaseQueue.h

FMDatabaseQueue.m

FMResultSet.h

FMResultSet.m

  FMDB使用:

  1.FMDatabase 非线程安全,不要在多线程中使用FMDatabase的单例


//用指定的数据库名实例化一个数据库,没有此文件则创建

FMDatabase *db = [FMDatabase databaseWithPath:filePath];

"" 在临时目录创建一个空的数据库,数据库关闭后会自动删除

NULL 在内存中创建一个空的数据库,数据库关闭后会自动删除

//打开数据库,资源不足或权限不够会打开失败

if (![db open])

{

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

}

//用完后需要关闭

[db close];

  数据库操作:

  查询操作:SELECT,返回FMResultSet,nil表示查询失败;


[db executeQuery:sql];

FMResultSet *rs = [db executeQuery:@"SELECT * FROM TableName"];

{

while ([rs next])

{

//获取查询结果,即使结果只有一条

}

}

  更新操作:非SELECT操作都是更新操作,返回值类型BOOL,YES:成功,NO:失败

  [db executeUpdate:sql];

  数据库事务:

  当需要插入的数据较多时,使用事务操作会比较快。


[db beginTransaction];

//需要执行的操作

[db commit];

FMResultSet *rs;

FMResultSet可以不手动关闭,当数据库关闭时,会跟着关闭。

  2.FMDatabaseQueue 线程安全,所有的数据库操作会在队列中顺序执行

[FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:path];

queue inDatabase:^(FMDatabase *db) {

//

}];

queue inTransaction:^(FMDatabase *db, BOOL *rollback) {

//

}

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2017-07-03

iOS数据库操作之FMDB的相关文章

iOS学习笔记(十六)——详解数据库操作(使用FMDB)_IOS

iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepersistentobjects等,FMDB (https://github.com/ccgus/fmdb) 是一款简洁.易用的封装库,这一篇文章简单介绍下FMDB的使用. 在FMDB下载文件后,工程中必须导入如下文件,并使用 libsqlite3.dylib 依赖包. FMDB同时兼容ARC和非ARC工

iOS SQLite3数据库操作

iOS中数据持久化分为四种:属性列表.对象归档.SQLite3和Core Data,SQLite3数据库操作是一个必不或缺的技术. SQLite3简介 SQLite3数据库是移动端(iOS.Android.嵌入式)上认定的关系型数据库,与MySQL.Oracle等数据库相比,具有轻量级的优势,这就造成了体积小.迅速.简单功能依旧强大等优势. SQLite3语句特点 不区分大小写 每一句以:结尾 SQLite字段类型 integer:整型 real:浮点值 text:文本字符串 blob:二进制类

编程-ios数据库如何使用~~~

问题描述 ios数据库如何使用--- ios中数据库怎么使用啊?SQLite------------------- 解决方案 http://blog.csdn.net/zhang_red/article/details/20923287 解决方案二: sqlite步骤超级多,网上查攻略吧,coredata比较简单 解决方案三: iOS中 用FMDB封装一个SQLite数据库 iOS中 用FMDB封装一个SQLite数据库 解决方案四: 搜FMDB,例子很多啊- 看看就会了 解决方案五: http

php数据库操作model类(使用__call方法)_php技巧

本文实例讲述了php数据库操作model类.分享给大家供大家参考,具体如下: 该数据库操作类使用__call()方法实现了数据的查找功能. 代码如下: <?php /* 作者 : shyhero */ define("HOSTNAME","127.0.0.1"); define("USERNAME","root"); define("PASSWORD",""); define(&q

自己动手写ASP.NET ORM框架(二):AdoHelper支持多数据库操作的封装(2)

在上一篇文章中已经分析了AdoHelper的部分代码,接下来将继续分析剩余的部分代码,这里分析ExecuteNonQuery方法的实现,代码块1-1: // <summary>//通过提供的参数,执行无结果集的数据库操作命令// 并返回执行数据库操作所影响的行数.// </summary>// <param name="connectionString">数据库连接字符串</param>// <param name="co

教您使用XML封装数据库操作语句的实现

xml|封装|数据|数据库|语句 在项目开发的过程当中,项目组开发成员的编程风格差异和数据库操作语句SQL的灵活性给项目组带来了越来越多的操作和维护难度. 比如: 从user表中取出所有数据,有的人会写成"select * from user",有的人会写成"select all from user",虽然在操作中不会有任何的错误,但在其他人读程序的过程时就会产生不好的感觉. 如果这种程序差异在项目中的数量级很多,那么在开发的过程当中程序就会出现各种各样的风格,在维

PHP实现的一个简单的数据库操作类

PHP实现的一个简单的数据库操作类 实现的功能: - 在实例化的时候能设置连接字符集 - 在实例化的时候能连接数据库 - 在实例化的时候能选择默认数据库 - 销毁对象时关闭数据库 代码如下: <?php // 数据库操作类MySQLDB class MySQLDB { // 声明属性 private $server; private $username; private $password; public $default_db; public $link; // 声明构造函数 public f

[原创] EasyASP v1.5简化ASP开发,包含数据库操作类

EasyASP v1.5简化ASP开发,包含数据库操作类 EasyASP是一个方便快速开发ASP的类,其中包含了一个数据库控制类(原clsDbCtrl.asp,对原代码作了优化和修改,包含对数据库的各类操作及存储过程的调用,全部封装在Easp.db中,使用起来会更方便,调用也更简单).而Easp类中提供了大量实用的ASP通用过程及方法,可以简化大部分的ASP操作.目前只提供了VBScript版,JScript版将来可能会提供.详细说明请下载帮助手册,里面有非常详细的使用方法说明及源码范例. 源码

简化你的ASP编写工作 (原数据库操作类clsdbCtrl.asp)

首先,认为ASP已经过时的人,请忽略此帖,谢谢.俺这里只是提供一种思路,希望能给很多还在学习和使用ASP的朋友一种方便.尽管俺现在也很少用ASP了,但俺相信只要能满足应用,就没有什么过时不过时的,也许它的语言没那么高级,但做出来的应用不一定就低级,呵呵.     EasyASP是一个方便快速开发ASP的类,其中包含了一个数据库控制类(原clsDbCtrl.asp,对原代码作了优化和修改,包含对数据库的各类操作及存储过程的调用,全部封装在Easp.db中,使用起来会更方便,调用也更简单).而Eas