我目前正在编写一个使用sqlite3与Windows系统上的数据库通信的.dll。
现在,它非常简单,我刚刚编写了一个测试程序,可以从数据库中插入和选择。
然而,这个问题是我的dll将被同一系统上的多个程序使用,每个程序都写入同一个数据库文件。这当然会带来互联网问题。
我想知道sqlite3库支持的程度,然后再为它编写一个复杂的连接池。根据doco,有一些“共享缓存”和“无互斥”模式,由sqlite3_open_v2
函数的参数指定:http://www.sqlite.org/c3ref/open.html
我还在寻找一些sqlite3包装器,但我找不到任何适合我的多访问需求的东西。
有没有人有从使用相同.dll的多个进程写入sqlite3 db文件的经验?或者有任何人使用他们的SHARED_CACHES
都有运气 - 我似乎遇到了各种各样的问题。
对此事的任何帮助都会很棒,谢谢!
〜丹
答案 0 :(得分:0)
只要您通过SQLite3访问同一个数据库文件,它应该没问题。实际上,SQLite3专门用于处理访问同一个DB文件的多个进程。
作为规范,SQL已经处理了多次访问,它提供了对原子访问等的控制(事务,那种事情)。只要您正确使用这些控件,就应该存档。
SQLite3存在问题的多个线程。