System.data.sqlite - 激活WAL日志模式

时间:2011-12-31 02:28:55

标签: vb.net sqlite system.data.sqlite sqlite-journal-mode

我在我的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命令?

3 个答案:

答案 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就足够了。