我正在寻找一种在SQLite使用shared cache mode包装器时启用System.Data.SQLite的方法。
我查看了这个项目的源代码,看到它在UnsafeNativeMethods.cs内部暴露给程序集:
internal static extern SQLiteErrorCode sqlite3_enable_shared_cache(
int enable);
不幸的是,我无法使用此方法,因为它是内部的。
任何人都有解决方案吗?
回复最受赞赏。谢谢!
仅供参考,使用SQLiteConnectionStringBuilder
API时,请通过以下方式启用共享缓存:
var builder = new SQLiteConnectionStringBuilder();
...
builder.Add("cache", "shared");
答案 0 :(得分:6)
您可以在连接字符串中启用共享缓存:
var connection = new SQLiteConnection("FullUri=file:mydb.sqlite?cache=shared");
答案 1 :(得分:2)
SQLite使用PRAGMA语句来修改数据库操作。这些语句特定于SQLite。 PRAGMA语句可以是任何内容,从启用外键,更改模式版本到设置共享缓存选项(可用的完整pragma命令列表here) 使用Pragma语句,我知道有两种方法可以执行它们; 1)实例化连接字符串或2)作为命令加载
1)实例化期间
new SQLiteConnection("Data Source=c:\mydb.db;Version=3;cache=shared");
2)单独命令 Pragma语句可以像任何普通的数据库命令一样执行 sqliteConnection.Open();
var cmd = new SQLiteCommand("PRAGMA cache=shared",sqliteConnection);
cmd.ExecuteNonQuery();
另一个值得一看的问题: SQLite SharedCache MultiThread Reads