FMDB 在使用上相当方便。...建立数据库只需要如下一行即可 , 当该文件不存在时,fmdb 会自己创建一个。...如果你传入的参数是空串:@”” ,则 fmdb 会在临时文件目录下创建这个数据库,如果你传入的参数是 NULL,则它会建立一个在内存中的数据库。...// 创建,最好放在一个单例的类中 FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:aPath]; // 使用 [queue...总结 ---- FMDB 将 SQLite API 进行了很友好的封装,使用上非常方便,对于那些使用纯 Sqlite API 来进行数据库操作的 app,可以考虑将其迁移到基于 FMDB 上,这对于以后数据库相关功能的开发维护
我们是使用FMDB保存好友,联系人数据,在开始使用FMDB的进行小批量数据的读写时,开始还是蛮正常的,随着数据量以及业务的复杂增加,发现了一些离奇的问题: 1、偶现联系人数据表中存在重复记录; 2、偶现读取不到数据...,但拉数据库里面却有数据; 根据业务场景分析,确实存在并发读写的情况,由于我们使用的是单例模式,所以问题1在不进行多线程互斥访问的情况下,确实是存在这个问题,所以想到的思路是将所有读写操作都放到一个队列中
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)操作。
获得存放数据库文件的沙盒地址。 ...documentPathstringByAppendingPathComponent:@"db.sqlite"]; returndbFilePath; } 3、创建数据库的操作...+(void)creatTable { //先判断数据库是否存在,如果不存在,创建数据库 if(!...[dbopen]){ NSLog(@"数据库打开失败"); return; } //为数据库设置缓存,提高查询效率...[dbsetShouldCacheStatements:YES]; //判断数据库中是否已经存在这个表,如果不存在则创建该表 if(!
关于FMDB最基本的使用我们就不在说了,这个网上大把的文章介绍,我就在这里总结几点我最近在写一个小东西的时候注意到的一点点东西: 一: 怎么看真机上SQLite数据库 我们在开发的过程中肯定有使用到真机测试...,不知道会不会有小伙伴有好奇心想看看在真机环境中我们创建的数据库可视化的数据是什么样子呢。...所以事务是线程安全的 EG:下面就是一个简单的数据存储关于FMDB事务的例子 /** debug @param title 统计标题 @param content 统计内容JSON数据...dbPath = %@",dbPath); //创建数据库 _dataBase = [FMDatabase databaseWithPath:dbPath]; if (!...[_dataBase open]) { debugLog(@"SensorsAnalytics open fail"); return; } //创建表
在已经存在的表中,添加字段,更新表结构 /** Test to see if particular column exists for particular t...
selectAllPersonFromPersonTable; @end DataBaseHandle.m #import "DataBaseHandle.h" #import "FMDB.h...nil) { handle = [[DataBaseHandle alloc]init]; } } return handle; } 写一个私有的方法,返回数据库的路径...Person表格 //创建一个Person表格 (void)creatPersonTable{ //初始化数据库对象 self.db = [FMDatabase databaseWithPath...: [self dbpath]]; //打开数据库 BOOL isOpen = [self.db open]; if (isOpen) { NSLog(@"打开成功"); //创建表...@"创建成功":@"创建失败"); }else{ NSLog(@"打开失败"); } } 四种方法:增、删、改、查; //插入person的方法 (void
概括: 我们先说说这两个东西,CoreData 和 FMDB,其实就我自己而言觉得这两个都不错,刚开始是接触FMDB的,CoreData是工作后自己看的。...,通过它将数据模型存入到数据库 NSManagedObjectContext 核心的数据库管理类 开发者通过操作它来执行对数据库的操作 NSEntityDescription 实体描述...NSURL * modelurl = [[NSBundle mainBundle]URLForResource:@"CoreDataTest" withExtension:@"momd"]; // 获取创建的...NSManagedObjectModel * mom = [[NSManagedObjectModel alloc]initWithContentsOfURL:modelurl]; 上面是创建...后面是一条创建 bulktest1 表的SQLite语句:@"create table bulktest1 (id integer primary key autoincrement, x text);
这篇文章重点介绍FMDB数据库插件的开发与使用。...二:实现思路分析 FMDB数据库插件是需要实现数据的新增、查询、修改、删除等功能,通过querySQLite方法来实现数据的查询,并将接口提供给Javascript开发使用,打开默认浏览器和打开自定义浏览器...,适合使用那个数据库方法 创建数据库DataBase.db 打开数据库 执行sql语句 JavaScript调用浏览器方法 三:实现源码分析 1....创建数据库DataBase.db 在导入第三方FMDB库之后,需要在DataBasePlugin.m引入: #import "FMDatabase.h" 实现数据库的第一步,创建数据表,源码如下: -...打开数据库 判断数据库表是否已创建,如果创建成功,或者已经存在数据表,即可打开数据库,源码如下: if (self.db) { if ([self.db open]) {
工程中经常需要使用数据库来保存一些数据在本地手机上,iOS是自带Sqlite的,但是常用的还是第三方的类库——FMDB。...这里说一说基本的使用方法 对于数据库来说,最开始的当然是建立数据库,在使用数据库前,最好先检查一下数据库是否存在,如果存在,则把数据库实例指向已存在的那个数据库,如果不存在,则创建: //SqlTest.h...self.db) {//判断数据库是否存在,不存在则创建数据库 //获取文件路径 NSArray *docs = NSSearchPathForDirectoriesInDomains...self.db = [FMDatabase databaseWithPath:dbFilePath]; } 在找到或创建数据库后,打开一下数据库,如果打开失败,则提示并处理...,这里用到的就不止是FMDB的方法了,而是用fileManager来直接删除文件: NSError *error; //创建文件管理器 NSFileManager *fileManager
在比较了Realm、SQLite之后,我决定在项目中依然使用SQLite数据库,并切还是使用FMDB这个第三方库来简化操作。...SQLite语句,从我自身来说,感觉其实没有那么好的记忆力,所以我又花了一点点时间来温习FMDB的常规操作,想到自己从来没有总结过数据库这方面的知识,今天就花一点点时间,对iOS端SQLite数据库做一点操作层面的总结...SQLite数据库,其实并不难学,打败许多初学者的,我觉得应该是它C语言中繁琐的API。我之前说我记不住,这套API,我真的看几次忘几次。所以才有了应运而生的FMDB。...,之后填写数据库的名字,完成创建。...如果创建数据库成功,那么我们就创建一个名字叫Device的表,这个设备表里有 deviceID, deviceName, deviceType, deviceStatus 四个字段,他们的类型分别是text
本地数据库,在移动设备上使用广泛。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了。...获取数据库 如果数据库不存在则建立数据库表,存在则返回数据库对象。
基于FMDB的ORM数据库设计 这次呢,我们来说说iOS中数据持久化的几种方案。...---- 数据库及其扩展封装 在iOS中,默认是携带sqlite3数据库的。 我们先来看看sqlite3是什么?...SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。...嘿嘿 FMDB FMDB是对sqlite3做的一层对象思想的封装。结构良好,执行效率比原生sqlite3并不逊色。优势在于他是面向对象的。...有意思 ---- DWDatabase 首先DWDatabase是一套基于FMDB的ORM数据库方案。他的设计理念就是要搞出一套无入侵性的根据模型自动落库的数据库方案。
一:介绍 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是Objective-C上操作Sqlite的开源库,与原生的操作sqlite数据库相比,有以下几个优点: 操作方便、简单、代码优雅,易于维护; 线程安全,用着更放心,很少出现过锁死数据库文件以及...FMDatabase不是线程安全的,一个FMDatabase对象一定不能在多线程中使用,为了保证线程安全,可以在FMDB中采取下面两种方式: 每个线程都创建一个FMDatabase对象,使用之前打开连接...用过Java中著名的Spring框架的同学都记得里面对数据库操作提供了一个Template的机制,比如JdbcTemplate、HibernateTemplate等,使用回调函数非常优雅的分离了创建连接...//创建一个FMDatabase的对象 FMDatabase *db = [FMDatabase databaseWithPath:dbPath]; //使用之前保证数据库是打开的...我们无需关心数据库的创建和关闭操作,只需要关心我们的业务逻辑就可以了。
这其中,也不乏使用 FMDB 的开发者。他们正准备将项目的数据库模块改为 WCDB 。 对于一个已经上线运行的项目,数据库这类基础组件与业务的耦合通常较多,迁移有一定工作量的。...平滑迁移 文件格式 由于 FMDB 和 WCDB 都基于 SQLite ,因此两者在数据库的文件格式上一致。用 FMDB 创建、操作的数据库,可以直接通过 WCDB 打开、使用。...相较于没有优化的 FMDB , WCDB 的初始化速度有 107% 的性能优势。 易用性比较 与已经上线运行项目不同,新项目更关注开发的效率。此时数据库的易用和便捷更重要。...FMDB 因其直白的封装,没有提供该功能。但在设计数据库表时,开发者通常会对数据进行建模。因此开发者只需将已有建模用 WCDB 的 ORM 表达出来即可。...数据库升级 SQLite 的数据库升级一直是一个比较繁杂的问题。 通常的做法是,开发者自行定义一个版本号,并保存下来。数据库创建时每次检查版本号,若版本号较低,则对其字段进行升级,并更新版本号。
目前,虽然SQLite也为iOS提供了数据库操作方法,但更多的时候,一般用FMDB,正如主流APP(如QQ和微信)会用到。这里介绍一个查询主流APP主要框架的网站:AppSight 。...1.使用方法(Usage) ---- FMDB有三个主要的类: FMDatabase:表示一个单独的SQLite数据库。 用来执行SQLite的命令。...1.1 数据库创建(Database Creation) 创建FMDatabase对象时参数为SQLite数据库文件路径。该路径可以是以下三种之一: 1.文件路径。...该文件路径无需真实存,如果不存在会自动创建。 2.空字符串(@"")。表示会在临时目录创建一个空的数据库,当FMDatabase 链接关闭时,文件也被删除。 3.NULL. 将创建一个内在数据库。...如果资源或权限不足无法打开或创建数据库,都会导致打开失败。 if (!
关于学习使用FMDB,除了笔者整理的官方文档翻译版,更重要的是实践和代码练习。...其实FMDatabaseQueue这个类的对象已经把一个数据库和有关事务操作的方法封装在一起了。一个FMDatabaseQueue实例对象里面包含一个FMDatabase数据库对象。...多线程生物:FMDatabaseQueue类 ---- 2.1 封装 2.1.1 单例类:负责创建FMDatabaseQueue和它的数据库 DataBaseManager.m // // DataBaseManager.m...小结 FMDatabase创建数据库的路径代码为: // 获得Documents目录路径 NSString *documentsPath = [NSSearchPathForDirectoriesInDomains...NSString *filePath = [documentsPath stringByAppendingPathComponent:@"DB1.sqlite"]; FMDatabaseQueue创建数据库的路径代码为
先来讨论为什么基于 TiKV 构建我们自己的 NoSQL 数据库。...,并且通过多副本技术达到实际的高可用,也就是说 NoSQL 数据库应该是一个“实际上的 CA” (effectively CA)系统。...我相信 TiKV 的这种可扩展架构,未来可以成为一种生态,还可以在上面“⻓出”其他的类型的数据库,比如说 Mango 协议、图协议。...这些数据库都具有与底层 TiKV 相同的线性一致性和高可用性,区别只在于对外的接口协议不同。...他们都有各自非常适用的使用场景,比如 MongoDB 贴近面向对象,图数据库适合节点的图关系运算。
二、Hive基本操作 2.1、创建数据库与创建数据库表 创建数据库操作 创建数据库 create database if not exists myhive; use myhive; ?...hive-site.xml当中的一个属性指定的 hive.metastore.warehouse.dir /user/hive/warehouse 创建数据库并指定...但是数据库的元数据信息是不可更改的,包括数据库的名称以及数据库所在的位置 修改数据库的创建日期 alter database myhive2 set dbproperties('createtime...删除数据库 删除一个空数据库,如果数据库下面有数据表,那么就会报错 drop database myhive2; 强制删除数据库,包含数据库下面的表一起删除 drop database myhive...cascade; 不要执行(危险动作) 创建数据库表操作 创建数据库表语法 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
领取专属 10元无门槛券
手把手带您无忧上云