我正在使用连接字符串
创建一个System.Data.SQLite内存数据库"Data Source=:memory:",
并希望在多线程之间访问此数据库。
现在我要做的是克隆SQLiteConnection
对象并将副本传递给工作线程。
但是我发现不同的线程实际上获得了内存数据库的单个实例,而不是共享数据库。如何在线程之间共享一个内存数据库?
谢谢!
答案 0 :(得分:4)
基于内存数据库的SQLite documentation,我会尝试使用URI文件名约定file::memory:?cache=shared
等命名的数据源而不是:memory:
(并特别注意缓存名称)所有连接被告知使用)。正如页面上所解释的那样,:memory:
的每个实例都与您发现完全不同。
请注意,在与内存数据库建立连接之前,您可能还必须首先启用共享缓存模式(在shared cache documentation中指定,并调用sqlite3_enable_shared_cache(int)
以实现此操作。< / p>