如何在C#中更改Sqlite数据库的“journal_mode”

5

遵循 Sqlite 的 PRAGMA 指令,我发现 PRAGMA schema.journal_mode; 可以更改日志模式。在给出的选项中,我选择了 off 来提高插入函数的性能。我写道:

SQLiteConnection m_dbConnection = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;PRAGMA Schema.journal_mode=off;");

这段代码会打开一个名为MyDatabase.sqlite的数据库。

PRAGMA Schema.journal_mode=off;

我相信结尾处的内容可以关闭sqlite数据库的日志记录,但我不知道如何做以及这是否是正确的方法。添加了PRAGMA命令后,我并没有看到性能上的改善。我从Tigran关于Sqlite的博客文章中下载了Sqlite库。
1个回答

4

PRAGMA 关键字不应在连接字符串中使用。正确的连接字符串语法为:

SQLiteConnection m_dbConnection = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;journal mode=Off;");

发现这些内容的一种方法是使用 SQLiteConnectionStringBuilder 对象:

SQLiteConnectionStringBuilder lcb = new SQLiteConnectionStringBuilder();
lcb.JournalMode = SQLiteJournalModeEnum.Off;
lcb.DataSource = sqlFile;
lcb.Version = 3;

string myLtConnStr = lcb.ConnectionString;

结果:

"日志模式=关闭;数据源=\"C:\SQLite Dbs\mydata.db\";版本=3"

一些数据库提供程序有很多选项 - 特别是有关日期时间处理和选项的选项 - 可以通过此方式切换。 一旦您知道语法,就可以省略 ConnectionStringBuilder 对象。


请注意,在阅读了您之前的问题后,我怀疑问题大部分出在您的代码上,而不是SQLite插入所需的时间。 - Ňɏssa Pøngjǣrdenlarp
1
是的,我发现我没有使用事务方法。 - user7037473

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接