2

アプリケーション全体で使用される構造の既存のデータベースがあります。データベースのインスタンスは定期的にローテーションされます。template.sqlite新しく作成されたすべてのデータベースのテンプレートとして使用されるデータベース ファイルがあります。作成スクリプトではなく、それを使用したいので、空のデータベース テンプレート自体の 1 つのファイルのみを維持する必要があります。

そのテンプレートファイルを元に、同じ構造のインメモリデータベースを作成したいと考えています。

データベースを開いてその構造を読み取ってから、メモリ内にデータベースを手動で作成できることを知っています。できれば、もっと自動でできるようにしたいです。

4

2 に答える 2

1

コマンドライン シェル.dumpのコマンドを使用して、実行できる一連の SQL コマンドを作成できます。

または、バックアップ APIを使用して、テンプレートを新しいデータベースにコピーすることもできます。

于 2013-06-10T11:06:53.060 に答える
0

この質問に対する答えを探しているすべての人のための簡単な解決策としてC: トリックを行うコードのビット:

int loadOrSaveDb(sqlite3 *pInMemory, const char *zFilename){
  int rc;
  sqlite3 *pFile;           /* Database connection opened on zFilename */
  sqlite3_backup *pBackup;  /* Backup object used to copy data */

  rc = sqlite3_open(zFilename, &pFile);
  if( rc==SQLITE_OK ) {

    pBackup = sqlite3_backup_init(pInMemory, "main", pFile, "main");
    if( pBackup ){
      (void)sqlite3_backup_step(pBackup, -1);
      (void)sqlite3_backup_finish(pBackup);
    }
    rc = sqlite3_errcode(pTo);
  }

  (void)sqlite3_close(pFile);
  return rc;
}
于 2013-06-10T12:21:34.967 に答える