2011-12-04 75 views
0

我想要一個具有永久數據庫文件(位於硬盤驅動器上)的應用程序,並且每次運行我需要的應用程序創建另一個數據庫文件(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); 

I.e.我需要有一個永久性的數據庫文件,在每次運行應用程序後都會更新(它應該包含來自舊運行的數據並更新新運行的數據)

在此先感謝。

回答

0

SQLite Online Backup API documentation

聯機備份API允許一個數據庫的內容被複制 到另一個數據庫,覆蓋 目標數據庫的原始內容。複製操作可以在 中以增量方式完成,這種情況下,源數據庫不需要鎖定 副本的持續時間,僅適用於實際從中讀取 的短時間段。這允許其他數據庫用戶在製作在線數據庫的備份時不中斷地繼續 。

至於我可以告訴大家,上一次運行的任何數據都將丟失,除非,當然,你把它的程序啓動時加載到內存數據庫,這樣它會在被複制回結束。

+0

thkala感謝您的回覆。你知道我能做些什麼來獲得不會丟失之前運行數據的文件嗎? – user1079655

相關問題