System.data.sqlite - Activating WAL Journal Mode System.data.sqlite - Activating WAL Journal Mode sqlite sqlite

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.