FMDB 中的多线程处理

FMDB 中的多线程处理,第1张

对于数据 *** 作,最重要的一点就是数据安全的问题,在多线程中,线程安全是数据安全的首要前提,下面谈谈FMDB 是如何对多线程进行处理的。

我们都知道FMDB 一个简单的使用就是调用它的单例模式

先创建个Person 表

插入数据的方法

多个线程同时使用db会发生什么呢?

结果

可以看到,三条插入语句分别开启了三个线程 2319873 、 2319749 、 2319758 ,只有 Michael 线程 2319758 插入成功了,另外两条都提示了

查看一下Person 表中的数据

结果,确实只有 Michael 一条数据

所以,多线程时在FMDB 单例中 *** 作同一张表是存在风险的,可能会造成数据丢失。

FMDatabaseQueue 就是FMDB 为线程安全提供的解决方案。

接着上面的例子,使用FMDatabaseQueue 代替单例再插入三条数据

结果

通过上面的运行结果可以看出三条insert 语句全部执行成功,并且分别在三个线程 2307639 、 2307634 、 2307624 中,相互之间并没有影响,可见FMDatabaseQueue 可以有效的保证其中执行sql 的线程安全。

如果要存储复杂对象类型的数据, 该对象必须遵循NSCoding协议, 并实现对应代理方法

对象类型实现代理后, 在存储之前还有一部 *** 作, 是把对象进行归档, 归档完成才可以使用FMDB进行存储, 对应类型为BLOB类型,

如果要直接存储复杂对象, 不想写归档什么的玩意, 可以使用一个第三方框架 JRDB , 这个可以直接存储复杂对象, jrdb是基于FMDB进行的二次封装框架, 可以试试噢

1导入

3在上面的两个函数中找到并添加下面的函数

FMEncryptDatabaseh

FMEncryptDatabasem

FMEncryptDatabaseQueue

FMEncryptHelperh

FMEncryptHelperm

以上就是关于FMDB 中的多线程处理全部的内容,包括:FMDB 中的多线程处理、iOS开发数据库存储能用FMDB直接存储对象吗、FMDB数据库加密/解密 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9383553.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存