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

标签 sqlite system.data.sqlite

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

相关文章:

nuget - 一个 NuGet 包(SQLite Core)导致 TFS 构建失败

c# - 数据库连接失败(System.Data.Sqlclient.SqlException)

nhibernate - 无法从NHibernate.Driver.SQLiteDriver创建驱动程序

c# - 在 C# 中,有什么方法可以将内存中的文件作为内存中的 SQLite 数据库与 System.Data.SQLite 链接?

angularjs - 在 IONIC 应用程序中使用 SQLite 时,"TypeError: Cannot read property ' 事务 ' of null"

ios - 触发自动向另一个表添加记录

sqlite - Flutter:类型 'Future<dynamic>' 不是类型 'Widget' 的子类型

c# - 数据无法使用 Entity Framework 持久保存到SQLite中的表

python - SQLITE创建语句错误

c# - LINQ to SQLite无法更新:“存储更新,插入或删除语句影响了意外的行数”