Comment ouvrir une connexion SQLite en mode WAL

En C #, comment ouvrir une connexion SQLite en mode WAL ?

Voici comment j’ouvre en mode normal:

SQLiteConnection connection = new SQLiteConnection("Data Source=" + file); connection.Open(); // (Perform my query) 

Que diriez-vous d’une approche d’usine pour spécifier dans la chaîne de connexion SQLiteConnection?

pour par exemple

 public static class Connection { public abstract SQLiteConnection NewConnection(Ssortingng file); } public class NormalConnection : Connection { public override SQLiteConnection NewConnection(Ssortingng file) { return new SQLLiteConneciton("Data Source=" + file); } } public class WALConnection : Connection { public override SQLiteConnection NewConnection(Ssortingng file) { return new SQLLiteConnection("Data Source=" + file + ";PRAGMA journal_mode=WAL;" } } 

Le code n’est pas testé, mais j’espère que vous pourrez avoir l’idée. Ainsi, lorsque vous l’utiliserez, vous pourrez le faire comme ça.

  SQLLiteConnection conWal = new WALConnection(file); conWAL.Open(); SQLLiteConnection conNormal = new NormalConnection(file); conNormal.Open(); 

La ligne ci-dessous correspond à ce que je cherchais, merci beaucoup à Turbot qui l’a répondu:

 new SQLiteConnection("Data Source=" + file + ";PRAGMA journal_mode=WAL;") 

Voici ma solution moins que parfaite:

 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) 

Si vous savez quelque chose de moins verbeux, je serais heureux d’en entendre parler!

Persistance du mode WAL

“Contrairement aux autres modes de journalisation, PRAGMA journal_mode = WAL est permanent. Si un processus définit le mode WAL, puis ferme et rouvre la firebase database, la firebase database reviendra en mode WAL.”

http://www.sqlite.org/wal.html

Si je comprends bien, cela signifie que vous pouvez définir le mode WAL pour une firebase database une fois, il n’est pas nécessaire de le définir à chaque connexion.

Vous pouvez le faire avec le shell en ligne de commande pour SQLite: http://www.sqlite.org/sqlite.html