我在我的vb.net程序中使用System.data.sqlite.dll。而对于我的生活,我无法弄清楚激活WAL模式的代码。
我是在创建数据库之后立即激活此命令,还是在每个新的SQLiteConnection之后激活此命令。
如果是这样的话,现在需要使用的代码如下:
cnn As New SQLiteConnection(String.Format("Data Source={0}\{1};PRAGMA jounal_mode=WAL;", Application.StartupPath, DBName))
应该如何使用PRAGMA命令?
答案 0 :(得分:8)
您可以随时使用SQLiteConnectionStringBuilder
课程为您完成工作:
SQLiteConnectionStringBuilder connBuilder = new SQLiteConnectionStringBuilder();
connBuilder.DataSource = filePath;
connBuilder.Version = 3;
//Set page size to NTFS cluster size = 4096 bytes
connBuilder.PageSize = 4096;
connBuilder.CacheSize = 10000;
connBuilder.JournalMode = SQLiteJournalModeEnum.Wal;
connBuilder.Pooling = true;
connBuilder.LegacyFormat = false;
connBuilder.DefaultTimeout = 500;
connBuilder.Password = "yourpass";
using(SQLiteConnection conn = new SQLiteConnection(connBuilder.ToString()))
{
//Database stuff
}
答案 1 :(得分:3)
这是我项目(App.config)中的示例连接字符串:
<connectionStrings>
<add name="SQLiteDb" providerName="System.Data.SQLite" connectionString="Data Source=data.sqlite;Version=3;Pooling=True;Synchronous=Off;journal mode=Memory"/>
</connectionStrings>
您可以指定journal mode=Memory
而不是journal mode=WAL
。
如果未在连接字符串中指定日记帐模式,则可以通过执行PRAGMA jounal_mode=WAL
查询到数据库来手动切换。
答案 2 :(得分:1)
您需要将pragma作为命令非查询执行。
Using cmd As SQLiteCommand = cnn.CreateCommand()
cmd.CommandText = "PRAGMA journal_mode=WAL"
cmd.ExecuteNonQuery()
End Using
只要您打开连接,setting this once就足够了。