7

I am using System.Data.SQLite.dll to make use of the SQLite in-memory database. After the program finishes, I would like to dump the in-memory database into a .db3 file for next use. How can I achieve this in C#?

4

1 に答える 1

8

私の知る限り、System.Data.SQLite.dll にはこれを実現する組み込み機能はありません。ただし、この機能は、SQLite コアと共に維持される sqlite3.exe クライアントに存在します。

これは、system.data.sqlite.dll で行う方法です。

  1. 新しいデータベース構造を作成するための SQL ステートメントを取得します。

    select sql from sqlite_master where name not like 'sqlite_%';
    
  2. すべてのユーザー テーブルの名前を取得します。

    select name 
    from sqlite_master 
    where type='table' and name not like 'sqlite_%';
    
  3. 新しい SQLiteConnection でオンディスク データベースを作成します。

  4. 以前に取得したすべての SQL ステートメントを実行して、オンディスク データベースにデータベース構造を作成します。

  5. オンディスク データベースへの個別の接続を閉じます。

  6. オンディスク データベースをインメモリ データベースにアタッチします。

    attach 'ondisk.db3' as 'ondisk';
    
  7. 前に取得したユーザー テーブルごとに、コンテンツをメモリ内からディスク上のデータベースにコピーします。

    insert into ondisk.TableX select * from main.TableX;
    insert into ondisk.TableY select * from main.TableY;
    
于 2012-08-31T09:19:27.720 に答える