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

xia*_*982 5 sqlite system.data.sqlite

我正在使用连接字符串创建System.Data.SQLite内存数据库

"Data Source=:memory:", 
Run Code Online (Sandbox Code Playgroud)

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

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

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

谢谢!

Goo*_*ger 5

根据内存数据库的SQLite 文档,我尝试使用以URI文件名约定file::memory:?cache=shared之类的名称代替的数据源:memory:(并特别注意所有连接被告知要使用的缓存名称)。如页面上所述:memory:,正如您所发现的,a的每个实例都是彼此不同的。

请注意,在建立与内存数据库的连接之前,您可能还必须先启用共享缓存模式(如在共享缓存文档中指定的那样,调用sqlite3_enable_shared_cache(int)此功能才能起作用。