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

DLL uses sqlite3 to write to same database file from different processes

本文关键字:同一个 数据库 文件 进程 sqlite3 使用 DLL      更新时间:2023-10-16

我目前正在编写一个.dll,它使用sqlite3与windows系统上的数据库进行对话。

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

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

在我为sqlite3库编写一个复杂的连接池之前,我想知道它在多大程度上支持这一点。根据文档,sqlite3_open_v2函数的参数指定了"共享缓存"answers"无互斥"模式:http://www.sqlite.org/c3ref/open.html

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

有人有从使用相同.dll的多个进程写入sqlite3db文件的经验吗?或者有人在使用他们的SHARED_CACHES方面运气好吗?我似乎遇到了各种各样的问题。

在这件事上有任何帮助都会很好,谢谢!

~ Dan

只要您通过SQLite3访问同一个数据库文件,就应该没问题。实际上,SQLite3是专门为处理多个进程访问同一个DB文件而设计的。

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

SQLite3遇到问题的是多个线程