我正在使用连接字符串创建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/