前端之家收集整理的这篇文章主要介绍了
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=-D
sqlITE_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