В C#, как открыть соединение SQLite в режиме WAL?
Вот как я открываю в обычном режиме:
SQLiteConnection connection = new SQLiteConnection("Data Source=" + file);
connection.Open();
// (Perform my query)
В C#, как открыть соединение SQLite в режиме WAL?
Вот как я открываю в обычном режиме:
SQLiteConnection connection = new SQLiteConnection("Data Source=" + file);
connection.Open();
// (Perform my query)
как насчет фабричного подхода для указания в строке подключения SQLiteConnection?
для например
public static class Connection
{
public abstract SQLiteConnection NewConnection(String file);
}
public class NormalConnection : Connection
{
public override SQLiteConnection NewConnection(String file)
{
return new SQLiteConnection("Data Source=" + file);
}
}
public class WALConnection : Connection
{
public override SQLiteConnection NewConnection(String file)
{
return new SQLiteConnection("Data Source=" + file + ";PRAGMA journal_mode=WAL;"
}
}
Код не тестировался, но я надеюсь, что вы можете понять идею, поэтому, когда вы его используете, вы можете сделать это.
SQLiteConnection conWal = new WALConnection(file);
conWAL.Open();
SQLiteConnection conNormal = new NormalConnection(file);
conNormal.Open();
Строка ниже - это то, что я искал, большое спасибо Turbot, чей ответ включает это:
new SQLiteConnection("Data Source=" + file + ";PRAGMA journal_mode=WAL;")
Вот мое менее совершенное решение:
SQLiteConnection connection = new SQLiteConnection("Data Source=" + file);
connection.Open();
using (var command = new SQLiteCommand(sqliteConnection))
{
command.CommandText = "PRAGMA journal_mode=WAL";
command.ExecuteNonQuery();
}
// (Perform my query)
Если вы знаете что-то менее подробное, я был бы рад услышать об этом!
Постоянство режима WAL
«В отличие от других режимов журналирования, PRAGMA journal_mode=WAL является постоянным. Если процесс устанавливает режим WAL, а затем закрывает и снова открывает базу данных, база данных вернется в режим WAL».
http://www.sqlite.org/wal.html
Если я правильно понимаю, это означает, что вы можете установить режим WAL для базы данных один раз, нет необходимости устанавливать его при каждом подключении.
Вы можете сделать это с помощью оболочки командной строки для SQLite: http://www.sqlite.org/sqlite.html