我希望有一个具有永久数据库文件的应用程序(在硬盘驱动器上),每次运行我的应用程序时,它都需要创建另一个存储某些信息的数据库文件(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);
即。我需要有一个永久数据库文件,每次运行我的应用程序后都会更新。(它应该包含旧运行的数据和新运行的更新数据)
提前致谢。
答案 0 :(得分:0)
来自SQLite Online Backup API documentation:
在线备份API允许复制一个数据库的内容 进入另一个数据库,覆盖原始内容 目标数据库。复制操作可以递增地进行 在哪种情况下,源数据库不需要被锁定 复制的持续时间,仅限于短暂的时间段 实际上正在阅读。这允许其他数据库用户继续 在进行在线数据库备份时不间断。
据我所知,之前运行的所有数据都将丢失,当然,除非您在程序启动时将其加载到内存数据库中,以便在最后将其复制回来。 / p>