2009-05-11 10 views
19

SQLiteでメモリ内のデータベースを作成してから、それを何らかのクエリで破壊することはできますか?SQLiteでの一時的なメモリ内データベース

私のdbレイヤーをユニットテストするには、これを行う必要があります。これまでのところ、私は通常のSQLite dbファイルを作成し、すべてのテストの後に削除していましたが、メモリ内ですべて実行する方がはるかに優れていました。

ディスクに何も書き込まずにメモリ内にのみデータベースをインスタンス化することは可能ですか? 全く新しいデータベースを作成したいので、トランザクションだけを使用することはできません。

答えて

30

":memory:":In-Memory Databasesというファイル名で作成します。

接続が終了するとすぐに存在しなくなります。

+0

超高速回答のためにうわー、 –

+3

メモリ内のデータベースで作業し、それをディスクにコピーするのは可能でしょうか? (このアイデアは、ブロッキングと時間のかかる文書の操作*を加速することです) –

1

私は、tmpfsファイルシステムをどこか(RAMのみのファイルシステム)にマウントし、それをユニットテストに使用することをお勧めします。

通常のようにDBファイルをインスタンス化し、rmを使用してそれらを吹き飛ばしますが、ディスクには何も流れていません。

(EDITは:ニース - 誰かが正しい答えに私を打つ;)にかかわらず、別のオプションとして、ここではこれを残す)

2

インメモリデータベースに代わるものとして、あなたは空の文字列を使用してSQLite temporary databaseを作成することができますファイル名。接続が終了すると削除されます。インメモリー・データベースを使用する利点は、データベースが使用可能なメモリーに限定されないことです。

また、データベースを一時ファイルに作成して、オペレーティングシステムでそのファイルをクリーンアップさせることもできます。これは、検査のためにアクセス可能であるという利点を有する。

関連する問題