iOS—SQLite数据库框架之FMDB -Swift详解手机开发

SQLite数据库框架之FMDB

什么是FMDB

FMDB是iOS平台的SQLite数据库框架,FMDB以OC的方式封装了SQLite的C语言API。对比苹果自带的Core Data框架,更加轻量级和灵活,使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码。并且FMDB提供了多线程安全的数据库操作方法,能有效地防止数据混乱。

如何集成FMDB?

这里我只写swift中的集成方式,Objective-C类似,只是不需要添加Swift extensions和桥接。

GitHub地址:https://github.com/ccgus/fmdb

方式一:

下载后将fmdb-master/src/fmdb和fmdb-master/src/extra/Swift extensions拖入项目中,添加系统库文件libsqlite3.tbd。如下图所示:

Snip20151113_1

方式二:

通过CocoaPods添加,但是不推荐这种方式,因为这不是官方的。

 

FMDB核心类

FMDatabase: 一个FMDatabase表示一个sqlite数据库,所有对数据库的操作都是通过这个类。

executeStatements: 执行多条sql。

executeQuery: 执行查询语句。

executeUpdate: 执行除查询以外的语句,create, drop, insert, delete, update。

FMDatabaseQueue: 内部封装FMDatabase和串行queue,用于多线程操作数据库,并且提供事务,建议使用这个。

inDatabase: 参数是一个闭包,在闭包里面可以获得FMDatabase对象。

inTransaction: 使用事务。

FMResultSet: 查询的结果集。

通过字段名称获取字段值。

如何使用FMDB?

一、创建表

使用FMDB和使用AFNetworking类似,最好单独创建一个工具类,使用单例进行数据库操作。

新建JFSQLiteManager类,继承NSObject。在这个类中重写构造方法创建FMDatabaseQueue对象,并创建一张数据表JF_Person。表中有4个字段,分别是id(主键)、name、age、height。

然后在AppDelegate中调用这个单例,测试我们的代码

显示 建表成功

二、删除表

在JFSQLiteManager类中实现删除表的方法,删除指定表名的数据表。

然后在AppDelegate中调用这个方法,测试我们的代码

显示 删除表成功

三、增加数据

在JFSQLiteManager类中实现添加数据的方法,插入一条测试数据。这里只是测试学习,所以SQL语句就直接写死了。

然后在AppDelegate中调用这个方法,测试我们的代码

显示 插入数据成功 插入数据的id: 1

四、删除数据

在JFSQLiteManager类中实现删除数据的方法,删除id = 1的数据。这里只是测试学习,所以SQL语句就直接写死了。

然后在AppDelegate中调用这个方法,测试我们的代码

显示 删除数据成功

五、修改数据

上面一步我们把添加的数据给删除,所以我们需要再次调用添加数据的方法,添加一条数据以供我们学习测试使用。

在JFSQLiteManager类中实现更新数据的方法,更新id = 1的数据。这里只是测试学习,所以SQL语句就直接写死了。

然后在AppDelegate中调用这个方法,测试我们的代码

显示 更新数据成功 !

六、查找数据

上面增、删、改中,我们执行sql语句的方法都是使用executeUpdate。但是查找数据,我们就必须使用executeQuery了。其实不管是神马操作,改变的基本都是SQL语句而已。这一点比起C语言的sqlite API来说,简直是太方便了。如果对于SQL语句不是很熟悉也没关系,在下已经为各位大神准备好了常用SQL语句:http://blog.6ag.cn/1227.html

在JFSQLiteManager类中实现更新数据的方法,查询JF_Person表中所有记录的id,name,age,height字段的值。这里只是测试学习,所以SQL语句就直接写死了。

然后在AppDelegate中调用这个方法,测试我们的代码

打印出

id: 1, name: 6ag, age: 24, height: 1.92 

————

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/app/6079.html

(0)
上一篇 2021年7月17日 00:36
下一篇 2021年7月17日 00:36

相关推荐

发表回复

登录后才能评论