博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发之FMDB
阅读量:5084 次
发布时间:2019-06-13

本文共 1791 字,大约阅读时间需要 5 分钟。

前言

      SQLite () 是一个轻量级的关系数据库。iOS SDK 很早就支持了 SQLite,在使用时,只需要加入 libsqlite3.dylib 依赖以及引入 sqlite3.h 头文件即可。但是,原生的 SQLite API 在使用上相当不友好,在使用时,非常不便。于是,开源社区中就出现了一系列将 SQLite API 进行封装的库,而 FMDB () 则是开源社区中的优秀者。FMDB 同时兼容 ARC 和非 ARC 工程,会自动根据工程配置来调整相关的内存管理代码。而且他提供了多线程安全的数据库操作方法,有效地防止数据混乱。

     FMDB是将sqlite封装处理的,所以使用FMDB之前也必须导入libsqlite3.dylib框架。

FMDB常用类

FMDatabase :          一个单一的SQLite数据库,用于执行SQL语句。

FMResultSet :          执行查询一个FMDatabase结果集。    

FMDatabaseQueue :在多个线程来执行查询和更新时会使用这个类。


创建数据库

 

NSString*path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)lastObject];

path = [path stringByAppendingString:@"testDB.sqlite"];

db = [FMDatabase databaseWithPath:path];  //指定路径创建一个数据库 dB是一个全局变量

1、testDB.sqlite不存在,系统会在路径下自动创建一个数据库。若在该路径之前存在这样的数据库,不会重复创建。

2、如果path为@"",系统会在一个临时的目录(并不是沙盒中的temp文件,这个临时目录是系统自动分配的)自己创建一个数据库,数据库断开连接后会自动删除。

3、如果path为nil,系统会在内存中创建一个数据库,数据库会在关闭后被销毁。

在数据库中建表

 

数据库中创建表

0、数据库操作前记得打开,操作结束后记得关闭

1、在FMDB中,除查询以外的所有操作,都称为“更新”。例如,create、drop、insert、update、delete等都采用executeUpdate来进行操作,select采用executeQuery操作。

2、executeUpdate方法返回一个BOOL值来表明是否操作成功。executeQuery方法返回一个FMResultSet(结果集),存放查询到的结果。

在表中插入数据

 

表中插入数据

1、?做占位符的话,传进来的值必须是对象类型。

2、FMDB的更新方法有很多,有兴趣的朋友可以都试试。

- (BOOL)executeUpdate:(NSString*)sql, ...

- (BOOL)executeUpdateWithFormat:(NSString*)format, ...

- (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments

2、sqlite的增删改(没有查),跟上面的格式其实都是一样的。唯一的不同的就是sqlite语句。sqlite语句不会写的直接百度搜索即可。

在表中查询数据

 

查询数据

1、FMResultSet提供了很多方法来获得所需的格式的值:stringForColumn  doubleForColumn boolForColumn等。不仅能通过列名来取数据,还能通过列的下标取数据。

2、FMDB的查询方法也有很多,同样可以试试

- (FMResultSet *)executeQuery:(NSString*)sql, ...

- (FMResultSet *)executeQueryWithFormat:(NSString*)format, ...

- (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)arguments

转载于:https://www.cnblogs.com/Sucri/p/5102921.html

你可能感兴趣的文章
MAC 上升级python为最新版本
查看>>
创业老板不能犯的十种错误
查看>>
Animations介绍及实例
查看>>
判断请求是否为ajax请求
查看>>
【POJ2699】The Maximum Number of Strong Kings(网络流)
查看>>
spring boot配置跨域
查看>>
BZOJ 1996 合唱队(DP)
查看>>
进击吧!阶乘——大数乘法
查看>>
安卓学习资料推荐-25
查看>>
Mysql数据库备份和还原常用的命令
查看>>
关于退出当前页面在火狐的一些问题
查看>>
【项目实施】项目考核标准
查看>>
spring-aop AnnotationAwareAspectJAutoProxyCreator类
查看>>
经典入门_排序
查看>>
Redis Cluster高可用集群在线迁移操作记录【转】
查看>>
二、spring中装配bean
查看>>
VIM工具
查看>>
javascript闭包
查看>>
@Column标记持久化详细说明
查看>>
创建本地yum软件源,为本地Package安装Cloudera Manager、Cloudera Hadoop及Impala做准备...
查看>>