System.Data.SQLite内存数据库多线程

时间:2012-09-14 02:04:19

标签: sqlite system.data.sqlite

我正在使用连接字符串

创建一个System.Data.SQLite内存数据库
"Data Source=:memory:", 

并希望在多线程之间访问此数据库。

现在我要做的是克隆SQLiteConnection对象并将副本传递给工作线程。

但是我发现不同的线程实际上获得了内存数据库的单个实例,而不是共享数据库。如何在线程之间共享一个内存数据库?

谢谢!

1 个答案:

答案 0 :(得分:4)

基于内存数据库的SQLite documentation,我会尝试使用URI文件名约定file::memory:?cache=shared等命名的数据源而不是:memory:(并特别注意缓存名称)所有连接被告知使用)。正如页面上所解释的那样,:memory:的每个实例都与您发现完全不同。

请注意,在与内存数据库建立连接之前,您可能还必须首先启用共享缓存模式(在shared cache documentation中指定,并调用sqlite3_enable_shared_cache(int)以实现此操作。< / p>