2011-12-04 6 views
0

アプリケーションを実行するたびに(ハードドライブ上に)永久的なデータベースファイルを持つアプリケーションを作成したい特定の情報を格納する別のデータベースファイル(RAM内の一時ファイル)を作成します。この一時ファイルは、実行終了時に1回永久記憶域(永続データベースファイル)にフラッシュされます。私は "SQLite Online Backup API" http://www.sqlite.org/backup.htmlを使うことを勧められましたが、質問がありました。一時ファイル(メモリ内の1つ)は、アプリケーションを終了するたびにバックアップファイルを更新するのでしょうか、バックアップファイルに含まれる古いデータをすべて消去し、メモリ内の情報のみを保存しますか?パーマネントDBを作成し、実行終了時に一時的なdb(:memory :)をその中にフラッシュする

このようなものですか?

char zFilename[] = "permanent.db"; 
char *db_name= ":memory:"; 

rc = sqlite3_open(db_name, &db); 
//write some data to db 
......... 

//end of application flush db(memory) to permanent.db file 
loadOrSaveDb(db, zFilename, 1); 

e.e.e.アプリケーションを実行するたびに更新される永続的なデータベースファイルを1つ作成する必要があります(古いランのデータと新しいランのデータを含む)

ありがとうございます。 SQLite Online Backup API documentationから

答えて

0

オンラインバックアップAPIは、が ターゲット・データベースの元の内容を上書きし、1つのデータベースの内容を別のデータベースに をコピーすることができます。コピー操作は、 で徐々に行われてもよく、その場合、コピー元のデータベースは、 が実際に読み取られている短い期間だけコピーの継続時間のためにロックされる必要はない。これにより、オンラインデータベースのバックアップが作成されている間に、他のデータベースユーザーが継続して を中断させることができます。私の知る限り、あなたのプログラムの起動時に、もちろん、あなたはインメモリデータベースにロード、しない限り、それはに戻ってコピーされるように、以前の実行から任意のデータは、失われます、言うことができるように

終わり。

+0

応答のためのthkalaありがとう。以前に実行したデータが失われないようにファイルを作成するにはどうすればよいですか? – user1079655

関連する問題