DLL使用sqlite3从不同进程写入相同的数据库文件

时间:2012-08-20 06:31:15

标签: c++ dll sqlite

我目前正在编写一个使用sqlite3与Windows系统上的数据库通信的.dll。

现在,它非常简单,我刚刚编写了一个测试程序,可以从数据库中插入和选择。

然而,这个问题是我的dll将被同一系统上的多个程序使用,每个程序都写入同一个数据库文件。这当然会带来互联网问题。

我想知道sqlite3库支持的程度,然后再为它编写一个复杂的连接池。根据doco,有一些“共享缓存”和“无互斥”模式,由sqlite3_open_v2函数的参数指定:http://www.sqlite.org/c3ref/open.html

我还在寻找一些sqlite3包装器,但我找不到任何适合我的多访问需求的东西。

有没有人有从使用相同.dll的多个进程写入sqlite3 db文件的经验?或者有任何人使用他们的SHARED_CACHES都有运气 - 我似乎遇到了各种各样的问题。

对此事的任何帮助都会很棒,谢谢!

〜丹

1 个答案:

答案 0 :(得分:0)

只要您通过SQLite3访问同一个数据库文件,它应该没问题。实际上,SQLite3专门用于处理访问同一个DB文件的多个进程。

作为规范,SQL已经处理了多次访问,它提供了对原子访问等的控制(事务,那种事情)。只要您正确使用这些控件,就应该存档。

SQLite3存在问题的多个线程