6

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

"Data Source=:memory:", 

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

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

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

谢谢!

4

1 回答 1

6

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

请注意,您可能还必须先启用共享缓存模式,然后才能连接到内存数据库(如共享缓存文档中指定的那样,调用sqlite3_enable_shared_cache(int)此模式才能正常工作。

于 2012-09-14T03:16:33.870 回答