2013-04-08 17 views
6

C# 'de SQLite bağlantısı nasıl açılır in WAL mode? Daha az ayrıntılı şeyler biliyorsanWAL modunda SQLite bağlantısı nasıl açılır

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) 

, duymak memnuniyet duyarız:

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

cevap

10

SQLiteConnection bağlantı dizesinde belirtilecek bir fabrika yaklaşımı nasıl olur? örneğin

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;" 
    } 
} 

için

kod test, ama buna kullandığınızda bu yüzden böyle yapabilir, anladınız umarım değildir.

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

+ 1'in kodunun son satırı aradığım çözüm sayesinde çok! Benim durumumda buna ihtiyaç duymama rağmen fabrika yaklaşımı ilginç olabilir. –

+1

Yaklaşımınız, SQLite bağlantı dizelerinde izin verilen parametrelerin sayısı göz önüne alındığında, kombinatoriklerde ilginç bir durum çalışmasıdır :) – Mark

1

benim az daha mükemmel bir çözümdür: Ben normal modda açmak nasıl İşte

olduğunu hakkında!

6

aşağıda hat ı Yanıtını içerdiği kalkan çok teşekkür, aradığı şeyi olduğu = WAL kalıcıdır. Bir işlem WAL modunu ayarlarsa, veritabanını kapatır ve yeniden açar, veritabanı WAL modunda geri döner. " Ben doğru anlamak

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

, bu her bağlantıda ayarlamak için gerek yoktur, bir kere veritabanı için WAL modunu ayarlamak anlamına gelir.

Sen SQLite için komut satırı kabuğu ile yapabilirsiniz: http://www.sqlite.org/sqlite.html

+0

Peki neden ona cevabı vermediniz? – Mawg

+0

@Mawg: Haklısınız. Az önce yaptım :-) –

1

Sebat WAL modunun diğer günlük kaydı modları aksine

", PRAGMA'ya journal_mode:

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

    SQLLiteConnection conNormal = new NormalConnection(file); 
    conNormal.Open();