FMDB iphone 数据库
from:http://blog.devtang.com/blog/2012/04/22/use-fmdb/
SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库。iOS SDK很早就支持了SQLite,在使用时,只需要加入 libsqlite3.dylib 依赖以及引入 sqlite3.h 头文件即可。但是,原生的SQLite API在使用上相当不友好,在使用时,非常不便。于是,开源社区中就出现了一系列将SQLite API进行封装的库,而FMDB (https://github.com/ccgus/fmdb) 则是开源社区中的优秀者。
FMDB在使用上相当方便。以下是一个简单的例子:
1 2 3 4 5 6 7 8 9 10 11 |
|
可以看到,使用FMDB后的数据库代码清晰明了,比原生的API优雅多了。另外,FMDB同时兼容ARC和非ARC工程,会自动根据工程配置来调整相关的内存管理代码。
使用说明
该使用说明主要翻译自fmdb的github项目说明文档: https://github.com/ccgus/fmdb
引入相关文件
首先将FMDB从github上clone下来,然后将以下文件copy到你的工程中:
1 2 3 4 5 6 7 8 9 10 |
|
建立数据库
建立数据库只需要如下一行即可,当该文件不存在时,fmdb会自己创建一个。如果你传入的参数是空串:@”” ,则fmdb会在临时文件目录下创建这个数据库,如果你传入的参数是 NULL,则它会建立一个在内存中的数据库。
1 |
|
打开数据库
使用如下语句,如果打开失败,可能是权限不足或者资源不足。通常打开完操作操作后,需要调用close方法来关闭数据库。
1 2 3 4 5 6 7 8 |
|
执行更新操作
除了Select操作之外,其它的都是更新操作。更新操作使用如下方法,如果有错误,可以用error参数中获得。
1 |
|
执行查询操作
查询操作示例如下。注意:即使操作结果只有一行,也需要先调用FMResultSet的next方法。
1 2 3 4 5 6 7 8 9 |
|
FMDB提供如下多个方法来获取不同类型的数据:
1 2 3 4 5 6 7 8 9 10 11 |
|
通常情况下,你并不需要关闭FMResultSet,因为相关的数据库关闭时,FMResultSet也会被自动关闭。
数据参数
通常情况下,你可以按照标准的SQL语句,用?表示执行语句的参数,如:
1 |
|
然后,可以我们可以调用executeUpdate方法来将?所指代的具体参数传入,通常是用变长参数来传递进去的,如下:
1 2 |
|
这里需要注意的是,参数必须是NSObject的子类,所以象int,double,bool这种基本类型,需要封装成对应的包装类才行,如下所示:
1 2 3 4 |
|
线程安全
如果我们的app需要多线程操作数据库,那么就需要使用FMDatabaseQueue来保证线程安全了。 切记不能在多个线程中共同一个FMDatabase对象并且在多个线程中同时使用,这个类本身不是线程安全的,这样使用会造成数据混乱等问题。
使用FMDatabaseQueue很简单,首先用一个数据库文件地址来初使化FMDatabaseQueue,然后就可以将一个闭包(block)传入inDatabase方法中。 在闭包中操作数据库,而不直接参与FMDatabase的管理。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
工具
为了查看Sqlite中的数据,一个好的图形化界面的数据库管理程序是必不可少的。mysql有phpMyAdmin,那么sqlite呢?
我主要使用的是Firefox的一个名为SQLite Manager的插件,安装此插件后,可以直接打开后缀名为sqlite的数据库文件。SQLite Manager提供一个图形化的界面来执行数据查询或更改操作。如下图所示:
总结
FMDB将SQLite API进行了很友好的封装,使用上非常方便,对于那些使用纯Sqlite API来进行数据库操作的app,可以考虑将其迁移到基于FMDB上,这对于以后数据库相关功能的开发维护,可以提高不少效率。
我在学习fmdb的时候做了一个小工程用于练习,我把它放到github上了。感兴趣的可以自行下载:https://github.com/tangqiaoboy/FmdbSample
Posted by 唐巧 Apr 22nd, 2012 iOS
FMDB iphone 数据库相关推荐
- 使用FMDB进行数据库操作
FMDB: https://github.com/ccgus/fmdb 按照教程可以通过pods的方式进行依赖引入. 简单的增删改查操作,代码如下: #import "ViewControl ...
- fmdb(FMDatabase) 数据库总结
这段时间公司在做一个新的应用,用到了数据库.在网上找了一些资料,最后决定用fmdb来做.主要是用起来比较简单,适合刚接触数据库这方面的人. 一.步 首先是创建数据库: +(NSString*)fil ...
- FMDB 操作数据库
操作数据库,之前,统一操作: if (![db open]) { [db release]; return; } 之后统一操作: [db close]; 1.创建表: ...
- Sqlite3数据库之第三方库FMDB学习心得
很早之前就接触Sqlite数据库,但是之前对数据库操作未使用任何第三方库,只是实现基本的增.删.改.查功能,自己对着一本iPhone开发入门级的书籍写了一个类,基本能实现上述四个功能.最近在开发一个软 ...
- 从C#到Objective-C,循序渐进学习苹果开发(7)--使用FMDB对Sqlite数据库进行操作
本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.本篇主要开始介绍基于XCod ...
- fmdb和mysql的区别_fmdb数据库
FMDB/SQLCipher数据库加解密,迁移 sqlite应用几乎在所有的App都能看到,虽然我们的数据存储在沙盒里面,一般情况下无法拿到,但是iOS管理软件(如:iFunBox)可以读取到应用程序 ...
- 谈谈用SQLite和FMDB而不用Core Data
谈谈用SQLite和FMDB而不用Core Data 发布于:2014-04-22 11:22阅读数:4235 凭良心讲,我不能告诉你不去使用Core Data.它不错,而且也在变好,并且它被很多其他 ...
- 我为什么用 SQLite 和 FMDB 而不用 Core Data
转:http://segmentfault.com/a/1190000000363392 编者注:文章的"我"是指原作者. 凭良心讲,我不能告诉你不去使用Core Data.它不错 ...
- iPhone 开发秘籍
iPhone 开发秘籍 市场价 :¥65.00 会员价 : ¥48.75(75折) 样章免费试读:http://www.china-pub.com/192624 [作 者](美)Erica Sadun ...
最新文章
- Spring踩坑记录
- 探索Java语言与JVM中的Lambda表达式
- win10开启wsl系统,让我们愉快的在windows上使用Linux
- 11、HTML <head>标签
- 蓝桥杯 入门训练 试题集汇总 【A+B问题、序列求和、圆的面积、Fibonacci数列】
- jwt, json web token
- 数据字典模板_巧用单元格保护功能+字典技术,制作高大上的人员信息录入表...
- wifi万能钥匙自媒体平台开放注册(付注册流程)
- 【洛谷试炼场】新手村:洛谷的第一个任务
- 如何用CSDN-markdown编辑器写博客
- 鱼雷武器控制系统半实物仿真系统ETest设计与实现
- Indented Inventory BOM如何转为最终的单层采购BOM
- 775针服务器cpu性能排行,CPU性能排行榜各种cup应有尽有
- 王者荣耀游戏时间计算机制,王者荣耀荣耀战力怎么算,荣耀战力计算机制详解...
- 快速删除node_modules目录的方法:指令rimraf
- English--五大基本句型基本概念
- PS 逆时针绕圈文字
- linux查看电源状态命令,Linux下查看电池损耗等信息
- c语言输出一些好看的图形,[转]好看的图形
- Vue入门(安装配置启动项目)