2013-04-08 15 views

答えて

10

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(); 
+0

+1、あなたのコードの最後の行は、私が探していたソリューションであり、おかげでたくさん!工場のアプローチは面白いかもしれませんが、私の場合は必要ありません。 –

+1

あなたのアプローチは、SQLite接続文字列で許可されるパラメータの数を考慮して、コンビナトリアルの興味深いケーススタディです:) – Mark

1

は私のより少なくより完璧なソリューションです:

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) 

あなたはあまり冗長何かを知っていれば、私は聞いて幸せになりますそれについて!

6

下の行は、私が探していたもので、多くの感謝:WALモード、他のジャーナリングモードとは異なり

」の

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

なぜ、彼に答えを授与しなかったのですか? – Mawg

+0

@Mawg:そうです。今やりました :-) –

1

持続性、PRAGMA journal_mode = WALは永続的です。プロセスがWALモードを設定し、データベースを閉じて再度開くと、データベースはWALモードに戻ります。

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

私はそれを正しく理解していれば、これはあなたが一度データベースのWALモードを設定することができ、すべての接続にそれを設定する必要はありませんことを意味します。

あなたはSQLiteのためのコマンドラインシェルでそれを行うことができます

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

関連する問題