【问题标题】:Doing Backup of database做数据库备份
【发布时间】:2013-06-11 11:28:41
【问题描述】:

我需要备份我的数据库。最初在我的“创建备份”页面中,我显示了我的原始数据库。当我单击添加新备份按钮时,必须在检查是否已进行任何新更改的条件下创建我的数据库的新备份。如果进行了任何更改,则必须创建新备份。否则,只会显示一条警报消息,表明上次备份文件没有更改。谁能帮忙解决这个问题

【问题讨论】:

  • 不清楚。你想要什么 ?你做了什么 ?有什么问题?

标签: iphone ios backup restore


【解决方案1】:

使用此方法。创建数据库的新副本并使用不同的名称保存。

- (void)copyDatabaseToCache
{
    NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *documentFolderPath = [searchPaths objectAtIndex: 0];
    NSString *dbPath1 = [documentFolderPath stringByAppendingPathComponent:@"newDatabaseName.sqlite"];
    NSString *backupDbPath = @"You should give back up db path here";
    NSError *error = nil;
    NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:backupDbPath error:&error];
   NSLog(@"Persistent store size: %@ bytes", [fileAttributes objectForKey:NSFileSize]);
    if ( ![[NSFileManager defaultManager] fileExistsAtPath:dbPath1]) {
        [[NSFileManager defaultManager] copyItemAtPath:backupDbPath toPath:dbPath1 error:nil];
        }


}

【讨论】:

  • 如果该路径中已经存在同名的数据库,则不会复制该数据库。但是,如果您想用新文件替换旧文件。只需删除 if 条件。
  • 是的,好吧.. 但我想检查上次备份的大小或修改日期,并且只有在存在大小差异时才想创建新备份(即,如果对最后一次备份)..我该怎么做..
  • 检查我是否编辑了我的代码。使用 NSFileSize 你可以计算两个 sqlite 的大小。然后比较它们并输入 if 条件。
  • 该代码创建了我的数据库的副本。但是它没有用指定的名称重命名新数据库,而是创建了一个具有该名称的文件夹并将我的数据库复制到其中。而且它还在继续去..也就是说,文件夹和数据库副本再次在文件夹内创建,并且在文件夹内再次创建相同的集合(即,文件夹和数据库副本的嵌套发生)..我该如何解决这个divyu ..
猜你喜欢
  • 1970-01-01
  • 2011-02-20
  • 1970-01-01
  • 2018-12-01
  • 2021-12-08
  • 2020-09-04
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多