2016-02-20 59 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

相关问题