加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

kiwi 新增支持sqlite3特性

发布时间:2020-12-12 20:19:02 所属栏目:百科 来源:网络整理
导读: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) #en
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属性设置数据库文件的路径

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读