我们是使用FMDB保存好友,联系人数据,在开始使用FMDB的进行小批量数据的读写时,开始还是蛮正常的,随着数据量以及业务的复杂增加,发现了一些离奇的问题: 1、偶现联系人数据表中存在重复记录; 2、偶现读取不到数据...,但拉数据库里面却有数据; 根据业务场景分析,确实存在并发读写的情况,由于我们使用的是单例模式,所以问题1在不进行多线程互斥访问的情况下,确实是存在这个问题,所以想到的思路是将所有读写操作都放到一个队列中
FMDB 在使用上相当方便。...使用说明 ---- 该使用说明主要翻译自 fmdb 的 github 项目说明文档: https://github.com/ccgus/fmdb 引入相关文件 首先将 FMDB 从 github 上 clone...建立数据库只需要如下一行即可 , 当该文件不存在时,fmdb 会自己创建一个。...如果你传入的参数是空串:@”” ,则 fmdb 会在临时文件目录下创建这个数据库,如果你传入的参数是 NULL,则它会建立一个在内存中的数据库。...总结 ---- FMDB 将 SQLite API 进行了很友好的封装,使用上非常方便,对于那些使用纯 Sqlite API 来进行数据库操作的 app,可以考虑将其迁移到基于 FMDB 上,这对于以后数据库相关功能的开发维护
FMDB是一个轻量级的数据库,用于将网络资源存储在本地。项目中使用 ARC 还是 MRC,对使用 FMDB 都没有任何影响,FMDB 会在编译项目时自动匹配。...FMDB 将 SQLite API 进行了很友好的封装,使用起来非常方便。...一:FMDB优点 1.使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码 2.对比苹果自带的Core Data框架,更加轻量级和灵活 3.提供了多线程安全的数据库操作方法,有效地防止数据混乱 二:将...,然后点击+号引用该动态库) 三:FMDB主要的核心类: 1.FMDatabase 一个FMDatabase对象就代表一个单独的SQLite数据库,用来执行SQL语句。...四:FMDB的增删改查 通常对数据库的操作,我们一般称为CURD,即对表进行创建(Create)、更新(Update)、读取(Read)和删除(Delete)操作。
获得存放数据库文件的沙盒地址。 ...,如果不存在,创建数据库 if(!...db){ [selfcreatDatabase]; } //判断数据库是否已经打开,如果没有打开,提示失败 if(!...[dbopen]){ NSLog(@"数据库打开失败"); return; } //为数据库设置缓存,提高查询效率...[dbsetShouldCacheStatements:YES]; //判断数据库中是否已经存在这个表,如果不存在则创建该表 if(!
关于FMDB最基本的使用我们就不在说了,这个网上大把的文章介绍,我就在这里总结几点我最近在写一个小东西的时候注意到的一点点东西: 一: 怎么看真机上SQLite数据库 我们在开发的过程中肯定有使用到真机测试...关于FMDB最基本的使用我们就不在说了,这个网上大把的文章介绍,我就在这里总结几点我最近在写一个小东西的时候注意到的一点点东西: 二:要是你要写入大量的数据 1、引入的它叫做“事务”,事务主要是解决数据量多的耗时操作...数据库以文件的形式存在磁盘中,每次访问时都要打开一次文件,如果对数据库进行大量的操作,就很慢。...所以事务是线程安全的 EG:下面就是一个简单的数据存储关于FMDB事务的例子 /** debug @param title 统计标题 @param content 统计内容JSON数据...= [NSString stringWithFormat:@"%ld",(long)[dateComponent hour]]; return hour; } 参考学习链接: FMDB
在已经存在的表中,添加字段,更新表结构 /** Test to see if particular column exists for particular t...
这篇文章重点介绍FMDB数据库插件的开发与使用。...二:实现思路分析 FMDB数据库插件是需要实现数据的新增、查询、修改、删除等功能,通过querySQLite方法来实现数据的查询,并将接口提供给Javascript开发使用,打开默认浏览器和打开自定义浏览器...,适合使用那个数据库方法 创建数据库DataBase.db 打开数据库 执行sql语句 JavaScript调用浏览器方法 三:实现源码分析 1....判断数据库语句,适合使用那个数据库方法 由于数据库查询语句中的查询参数,需要通过接口传入,并不是和sql语句一起传入,所以需要进行拼接,这就需要用到数据库查询方法querySQLite,因为查询语句中包含...创建数据库DataBase.db 在导入第三方FMDB库之后,需要在DataBasePlugin.m引入: #import "FMDatabase.h" 实现数据库的第一步,创建数据表,源码如下: -
selectAllPersonFromPersonTable; @end DataBaseHandle.m #import "DataBaseHandle.h" #import "FMDB.h...nil) { handle = [[DataBaseHandle alloc]init]; } } return handle; } 写一个私有的方法,返回数据库的路径...stringByAppendingPathComponent:@"db.sqlite"]; } 创建一个Person表格 //创建一个Person表格 (void)creatPersonTable{ //初始化数据库对象...self.db = [FMDatabase databaseWithPath: [self dbpath]]; //打开数据库 BOOL isOpen = [self.db open];...p.age = @"20"; //调用插入person的方法 // [[DataBaseHandle shareDateBaseHandle]insertPersonTable:p]; //接收数据库返回的查询结果
概括: 我们先说说这两个东西,CoreData 和 FMDB,其实就我自己而言觉得这两个都不错,刚开始是接触FMDB的,CoreData是工作后自己看的。...在开发中你要是只是使用一张表去存储一点简单的东西,使用FMDB也方便,可是一旦表与表之间产生属性关联的话,用FMDB就比较的麻烦了。但用 CoreData 就比较的容易。 ...,通过它将数据模型存入到数据库 NSManagedObjectContext 核心的数据库管理类 开发者通过操作它来执行对数据库的操作 NSEntityDescription 实体描述...FMDB: 我自己用着FMDB感觉一切还好,除了每次一懵逼,找找SQLite语句。 它的使用,网上真的是一大把,我就不再重复啰嗦了。...把FMDB官方的解释中文版链接给大家,有时间还是看看吧,毕竟不是每个人都知道官方解释说了什么。说不定就有遗落了的知识。 FMDB 使用方法 有一点你知道吗?
在比较了Realm、SQLite之后,我决定在项目中依然使用SQLite数据库,并切还是使用FMDB这个第三方库来简化操作。...SQLite语句,从我自身来说,感觉其实没有那么好的记忆力,所以我又花了一点点时间来温习FMDB的常规操作,想到自己从来没有总结过数据库这方面的知识,今天就花一点点时间,对iOS端SQLite数据库做一点操作层面的总结...SQLite数据库,其实并不难学,打败许多初学者的,我觉得应该是它C语言中繁琐的API。我之前说我记不住,这套API,我真的看几次忘几次。所以才有了应运而生的FMDB。...建表以及关闭表 使用数据库的第一件事,就是建立一个数据库。要注意的是,在iOS环境下,只有document directory 是可以进行读写的。...的常用操作就已经讲完了,后面还会补上FMDB的多线程操作。
本地数据库,在移动设备上使用广泛。IOS平台上自然也少不了它。最近自己折腾一个小App的时候需要使用sqlite本地数据库,上Github搜了下IOS下对SQLite的三方封装有个星星很多的FMDB。...下面我就介绍下如何在Swift下使用oc的FMDB库。 1.下载 第一步自然是去下载FMDB了。...https://github.com/ccgus/fmdb 2.建立桥接 把下载下来的zip解压。打开项目文件夹,找到fmdb文件夹,把里面所有的文件选中,拖动到你的Swfit项目中。 ...在里面输入:#import "FMDB.h" 这样我们FMDB到Swift的桥接头就建好了。 3.使用 有了桥接头,我们就可以欢快的使用FMDB了。...获取数据库 如果数据库不存在则建立数据库表,存在则返回数据库对象。
工程中经常需要使用数据库来保存一些数据在本地手机上,iOS是自带Sqlite的,但是常用的还是第三方的类库——FMDB。...这里说一说基本的使用方法 对于数据库来说,最开始的当然是建立数据库,在使用数据库前,最好先检查一下数据库是否存在,如果存在,则把数据库实例指向已存在的那个数据库,如果不存在,则创建: //SqlTest.h...,打开后,为数据库设置缓存来提高查询效率: if (!...:YES];//为数据库设置缓存,提高查询效率 接下来的工作是建表,这里示例建立一个存储用户名和密码的表:同样的,在使用时,先检查数据库中是否有该表,有则跳过建表过程,没有则建表: if (!...,这里用到的就不止是FMDB的方法了,而是用fileManager来直接删除文件: NSError *error; //创建文件管理器 NSFileManager *fileManager
基于FMDB的ORM数据库设计 这次呢,我们来说说iOS中数据持久化的几种方案。...---- 数据库及其扩展封装 在iOS中,默认是携带sqlite3数据库的。 我们先来看看sqlite3是什么?...SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。...嘿嘿 FMDB FMDB是对sqlite3做的一层对象思想的封装。结构良好,执行效率比原生sqlite3并不逊色。优势在于他是面向对象的。...有意思 ---- DWDatabase 首先DWDatabase是一套基于FMDB的ORM数据库方案。他的设计理念就是要搞出一套无入侵性的根据模型自动落库的数据库方案。
FMDB是Objective-C上操作Sqlite的开源库,与原生的操作sqlite数据库相比,有以下几个优点: 操作方便、简单、代码优雅,易于维护; 线程安全,用着更放心,很少出现过锁死数据库文件以及...FMDatabase不是线程安全的,一个FMDatabase对象一定不能在多线程中使用,为了保证线程安全,可以在FMDB中采取下面两种方式: 每个线程都创建一个FMDatabase对象,使用之前打开连接...、关闭连接和使用数据库连接操作数据库,下面就来模拟这个实现。...历史总是惊人的相似,FMDatabaseQueue的使用就是采用这样的方式来处理的,来看一段fmdb主页上提供的一个例子: FMDatabaseQueue *queue = [FMDatabaseQueue...在GitHub上的主页 或者访问@唐巧_boy 关于FMDB的这篇文章 Have Fun!
目前,虽然SQLite也为iOS提供了数据库操作方法,但更多的时候,一般用FMDB,正如主流APP(如QQ和微信)会用到。这里介绍一个查询主流APP主要框架的网站:AppSight 。...FMDB官方源码地址传送门:https://github.com/ccgus/fmdb 。 FMDB是SQLite的Objective-C包装器:http://sqlite.org/ 。...1.使用方法(Usage) ---- FMDB有三个主要的类: FMDatabase:表示一个单独的SQLite数据库。 用来执行SQLite的命令。...,请继续阅读:http://www.sqlite.org/inmemorydb.html) 1.2 打开数据库(Opening) 在和数据库交互之前,数据库必须是打开的。...1.5 关闭数据库(Closing) 当使用完数据库,你应该-close 来关闭数据库连接来释放SQLite使用的资源。
一:介绍 FMDB是一个轻量级的数据库,用于将网络资源存储在本地。 项目中使用 ARC 还是 MRC,对使用 FMDB 都没有任何影响,FMDB 会在编译项目时自动匹配。...FMDB 将 SQLite API 进行了很友好的封装,使用起来非常方便。 下面是对FMDB的使用总结,分享给大家,另外附一份demo供大家参考。...二:FMDB优点 1.使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码 2.对比苹果自带的Core Data框架,更加轻量级和灵活 3.提供了多线程安全的数据库操作方法,有效地防止数据混乱 三:将...FMDB第三方库引入到项目 下载FMDB库文件,demo中是直接导入项目中,可直接下载demo引用库文件,也可以使用CocoaPods导入。...五:使用FMDB进行增删改查 通常对数据库的操作,我们一般称为CURD,即对表进行创建(Create)、更新(Update)、读取(Read)和删除(Delete)操作。
这其中,也不乏使用 FMDB 的开发者。他们正准备将项目的数据库模块改为 WCDB 。 对于一个已经上线运行的项目,数据库这类基础组件与业务的耦合通常较多,迁移有一定工作量的。...平滑迁移 文件格式 由于 FMDB 和 WCDB 都基于 SQLite ,因此两者在数据库的文件格式上一致。用 FMDB 创建、操作的数据库,可以直接通过 WCDB 打开、使用。...相较于没有优化的 FMDB , WCDB 的初始化速度有 107% 的性能优势。 易用性比较 与已经上线运行项目不同,新项目更关注开发的效率。此时数据库的易用和便捷更重要。...对于等价的功能, WCDB 所需的代码量往往会比 FMDB 少很多。而更少的代码量通常意味着更快的开发效率和更少的错误。 基础操作 ORM 是现代客户端数据库比较普遍的功能。...FMDB 因其直白的封装,没有提供该功能。但在设计数据库表时,开发者通常会对数据进行建模。因此开发者只需将已有建模用 WCDB 的 ORM 表达出来即可。
关于学习使用FMDB,除了笔者整理的官方文档翻译版,更重要的是实践和代码练习。...笔者曾查阅过FMDB示例用法的一些文献,一部分有的只讲到FMDatabase类,另一部分只讲专为多线程操作的FMDatabaseQueue类,很少有同时介绍两者用法区别的文章。这里,笔者做一个尝试。...关于FMDatabase,官方文档说:它表示一个单独的SQLite数据库,用来执行SQLite的命令。...其实FMDatabaseQueue这个类的对象已经把一个数据库和有关事务操作的方法封装在一起了。一个FMDatabaseQueue实例对象里面包含一个FMDatabase数据库对象。...参考文献: https://git.oschina.net/wenxing/ML_FMDB https://github.com/CoderWooo/FMDBDemo
数据库 FMDB - 多线程FMDatabaseQueue实例,FMDB数据库的使用演示和封装工具类,基于fmdb的基本操作 通过fmdb进行的数据库的基本操作(增删改查)查找是使用UISearchBar...GXDatabaseUtils - 在FMDB基础上的工具。...RealmIncrementalStore.swift - RealmIncrementalStore.swift:集Realm数据库和CoreData对象模型两者优势的Realm数据库访问类。...官方教程,加密你的SQLite - 各种sqlite数据库加密介绍 。SQLCipherDemo下载 。...swiftydb - 是一个第三方SQLite工具,能够大大简化数据库操作。如果你不放心Realm,那就用SwiftyDB吧。
自己是最近才有时间看的WCDB,总结一下自己的理解和学习的东西,WCDB是微信团队开源的支持Android,也支持iOS,那当然也是会支持macOS的一个移动端数据库框架,FMDB估计做iOS的99.99%... 一:关系型数据库,代表有CoreData、FMDB等 CoreData:微信团队在公众号的文章中对它的总结是这样:它是苹果内建框架,和Xcode深度结合,可以很方便进行ORM;...FMDB:它基于SQLite封装,对于有SQLite和ObjC基础的开发者来说,简单易懂,可以直接上手;而缺点也正是在此,FMDB只是将SQLite的C接口封装成了ObjC接口,没有做太多别的优化,即所谓的胶水代码...但当前可能还是做得不够吧,所以你这样看可能也就不难理解,一起为什么那么多人用FMDB,但确实也是有些场景中CoreData能做起来容易点的的不一定FMDB也容易,比如在两张表之间建立联系的时候,CoreData...4、从FMDB迁移到WCDB 这部分的内容上面提到自己在准备迁移到WCDB,所以就等迁移完成了会分享出心得。
领取专属 10元无门槛券
手把手带您无忧上云