kiwi 新增支持sqlite3特性

前端之家收集整理的这篇文章主要介绍了kiwi 新增支持sqlite3特性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
kiwi 新增支持sqlite3特性 官网 http://www.sqlite.org/ 版本 sqlite-autoconf-3071602.tar.gz(3.7.16.2) compile for win32 修改sqlite3.c,将sqlITE_API宏定义为__declspec(dllexport) #ifndef sqlITE_API # define sqlITE_API __declspec(dllexport) #endif compile for linux #cd /vendor/sqlite3/sqlite-autoconf-3071602 #./configure CFLAGS=-DsqlITE_THREADSAFE=2 #make 编译后会在当前目录下生成一个隐藏目录.libs,库文件就在此目录下 线程安全模式 单线程:禁用所有的mutex锁,并发使用时会出错。当sqlite编译时加了sqlITE_THREADSAFE=0参数,或者在初始化sqlite前调用sqlite3_config(sqlITE_CONFIG_SINGLETHREAD)时启用。 多线程:只要一个数据库连接不被多个线程同时使用就是安全的。源码中是启用bCoreMutex,禁用bFullMutex。实际上就是禁用数据库连接和prepared statement(准备好的语句)上的锁,因此不能在多个线程中并发使用同一个数据库连接或prepared statement。当sqlite编译时加了sqlITE_THREADSAFE=2参数时默认启用。若sqlITE_THREADSAFE不为0,可以在初始化sqlite前,调用sqlite3_config(sqlITE_CONFIG_MULTITHREAD)启用;或者在创建数据库连接时,设置sqlITE_OPEN_NOMUTEX flag。 串行:启用所有的锁,包括bCoreMutex和bFullMutex。因为数据库连接和prepared statement都已加锁,所以多线程使用这些对象时没法并发,也就变成串行了。当sqlite编译时加了sqlITE_THREADSAFE=1参数时默认启用。若sqlITE_THREADSAFE不为0,可以在初始化sqlite前,调用sqlite3_config(sqlITE_CONFIG_SERIALIZED)启用;或者在创建数据库连接时,设置sqlITE_OPEN_FULLMUTEX flag。 参考: 1)http://www.keakon.net/2011/10/25/sqlite%E5%9C%A8%E5%A4%9A%E7%BA%BF%E7%A8%8B%E7%8E%AF%E5%A2%83%E4%B8%8B%E7%9A%84%E5%BA%94%E7%94%A8 2)sqlite-doc-3071602里面的compile.html 如何使用 db.conf <?xml version="1.0" encoding="UTF-8" standalone="no"?> <config> <trace level="1"></trace> <dbcpool> <dbcp name="laton" dba="sqliteapi" encoding="utf-8" dbms="sqlite" count="10" autoreconn="true" connstring="data/user.db"/> </dbcpool> </config> 注意: dbms属性设置为sqlite connstring属性设置数据库文件的路径 原文链接:https://www.f2er.com/sqlite/201385.html

猜你在找的Sqlite相关文章