1
在我的應用程序中,我想識別數據庫何時已損壞並自動修復它。具體來說,當應用程序第一次打開時,我運行一個ANALYZE命令,如果它返回狀態11(數據庫磁盤映像格式錯誤),那麼我想有一種恢復數據的方法。如何在沒有命令行的情況下以編程方式轉儲SQLite
我發現的所有例子都使用終端做轉儲,然後導入後續的SQL命令文件。
由於命令行在iOS上不可用,我該如何在自己的代碼中執行數據庫轉儲?
感謝
在我的應用程序中,我想識別數據庫何時已損壞並自動修復它。具體來說,當應用程序第一次打開時,我運行一個ANALYZE命令,如果它返回狀態11(數據庫磁盤映像格式錯誤),那麼我想有一種恢復數據的方法。如何在沒有命令行的情況下以編程方式轉儲SQLite
我發現的所有例子都使用終端做轉儲,然後導入後續的SQL命令文件。
由於命令行在iOS上不可用,我該如何在自己的代碼中執行數據庫轉儲?
感謝
我認爲你可以很容易地複製並保存數據庫與另一名(擴展時間戳)。你必須弄清它何時會造成損害(它不應該損壞它取決於你的損害的含義)並將其更換。
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
'.dump'通常不起作用;它只是輸出所有可讀的內容。 –