在运行结束时创建永久数据库并将临时db(:memory :)刷新到其中

时间:2011-12-04 23:23:21

标签: sqlite

我希望有一个具有永久数据库文件的应用程序(在硬盘驱动器上),每次运行我的应用程序时,它都需要创建另一个存储某些信息的数据库文件(RAM中的临时文件)。在执行结束时,此临时文件将被刷新到永久存储(永久数据库文件)一次。我被建议使用“SQLite在线备份API”http://www.sqlite.org/backup.html但是有一个问题。每次退出应用程序时临时文件(内存中的一个)是否会更新我的备份文件,还是会清除备份文件中包含的所有旧数据并仅保存内存中的信息?

是这样的吗?

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);

即。我需要有一个永久数据库文件,每次运行我的应用程序后都会更新。(它应该包含旧运行的数据和新运行的更新数据)

提前致谢。

1 个答案:

答案 0 :(得分:0)

来自SQLite Online Backup API documentation

  

在线备份API允许复制一个数据库的内容   进入另一个数据库,覆盖原始内容   目标数据库。复制操作可以递增地进行   在哪种情况下,源数据库不需要被锁定   复制的持续时间,仅限于短暂的时间段   实际上正在阅读。这允许其他数据库用户继续   在进行在线数据库备份时不间断。

据我所知,之前运行的所有数据都将丢失,当然,除非您在程序启动时将其加载到内存数据库中,以便在最后将其复制回来。 / p>