我正在使用连接字符串创建 System.Data.SQLite 内存数据库
"Data Source=:memory:",
并且想要在多线程之间访问这个数据库。
现在我要做的是克隆
SQLiteConnection
对象并将副本传递给工作线程。但是我发现不同的线程实际上获得了内存数据库的单个实例,而不是共享的实例。如何在线程之间共享一个内存数据库?
谢谢!
最佳答案
基于 SQLite documentation对于内存数据库,我会尝试使用 URI 文件名约定命名的数据源 file::memory:?cache=shared
或类似的代替 :memory:
(并特别注意所有连接都被告知要使用的缓存名称)。如页面上所述, :memory:
的每个实例与您发现的完全相同。
请注意,您可能还必须首先启用共享缓存模式,然后才能连接到内存数据库(如 shared cache documentation 中指定的,并调用 sqlite3_enable_shared_cache(int)
以使其工作。
关于sqlite - System.Data.SQLite 内存数据库多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12417222/