System.data.sqlite - Activating WAL Journal Mode
You can always use the SQLiteConnectionStringBuilder
class to do the job for you:
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 }
This is a sample connection string from my project (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>
Instead of journal mode=Memory
you can specify journal mode=WAL
.
If you don't specify journal mode in connection string, you can switch it manually by executing PRAGMA jounal_mode=WAL
query to database.
You need to execute the pragma as a command nonquery.
Using cmd As SQLiteCommand = cnn.CreateCommand() cmd.CommandText = "PRAGMA journal_mode=WAL" cmd.ExecuteNonQuery()End Using
As long as you keep your connection open, setting this once will be enough.