【问题标题】:How do I dump SQLite programmatically without command line如何在没有命令行的情况下以编程方式转储 SQLite
【发布时间】:2016-06-02 02:15:33
【问题描述】:

在我的应用程序中,我想识别数据库何时损坏并自动修复它。具体来说,当应用程序第一次打开时,我运行 ANALYZE 命令,如果它返回状态 11(数据库磁盘映像格式错误),那么我想要一种恢复数据的方法。

我找到的所有示例都使用终端进行转储,然后导入后续的 SQL 命令文件。

由于命令行在 iOS 上不可用,我如何从我自己的代码中转储数据库?

谢谢

【问题讨论】:

  • .dump 经常不起作用;它只是输出碰巧可读的所有内容。

标签: ios swift sqlite


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 2011-02-28
    • 2012-07-24
    • 1970-01-01
    相关资源
    最近更新 更多