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'通常不起作用;它只是输出所有可读的内容。 –