Как открыть соединение SQLite в режиме WAL
В C#, как открыть соединение SQLite в режиме WAL?
вот как я открываю в обычном режиме:
SQLiteConnection connection = new SQLiteConnection("Data Source=" + file);
connection.Open();
// (Perform my query)
4 ответов
Как насчет фабричного подхода для указания в строке соединения SQLiteConnection ?
для электронной.г
public static class Connection
{
public abstract SQLiteConnection NewConnection(String file);
}
public class NormalConnection : Connection
{
public override SQLiteConnection NewConnection(String file)
{
return new SQLLiteConneciton("Data Source=" + file);
}
}
public class WALConnection : Connection
{
public override SQLiteConnection NewConnection(String file)
{
return new SQLLiteConnection("Data Source=" + file + ";PRAGMA journal_mode=WAL;"
}
}
код не тестируется, но я надеюсь, что вы можете получить идею, поэтому, когда вы его используете, вы можете это сделать.
SQLLiteConnection conWal = new WALConnection(file);
conWAL.Open();
SQLLiteConnection 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