2016-02-20 115 views
1

在我的應用程序中,我想識別數據庫何時已損壞並自動修復它。具體來說,當應用程序第一次打開時,我運行一個ANALYZE命令,如果它返回狀態11(數據庫磁盤映像格式錯誤),那麼我想有一種恢復數據的方法。如何在沒有命令行的情況下以編程方式轉儲SQLite

我發現的所有例子都使用終端做轉儲,然後導入後續的SQL命令文件。

由於命令行在iOS上不可用,我該如何在自己的代碼中執行數據庫轉儲?

感謝

+0

'.dump'通常不起作用;它只是輸出所有可讀的內容。 –

回答

1

我認爲你可以很容易地複製並保存數據庫與另一名(擴展時間戳)。你必須弄清它何時會造成損害(它不應該損壞它取決於你的損害的含義)並將其更換。

NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSError *error; 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

NSString *sqlpath = [documentsDirectory stringByAppendingPathComponent:@"Your-sqlitefile"]; 
NSString *sqldump = //append timestamp 

[fileManager copyItemAtPath:sqlpath toPath:sqldump error:&error]; 

編輯:

請參考下面的答案。我沒有用過自己,但希望它有幫助。 https://stackoverflow.com/a/27453637/1881472

相關問題