我打算开发一个销售点系统,并打算使用sqlite3作为数据库。经过几天的研究,我在备份或恢复sqlite3数据库时找不到任何教程或示例。我可以接受的解决方案是上传到云端或Dropbox。
答案 0 :(得分:3)
试试这个答案。
创建备份&使用Dropbox恢复文件
按照iOS App的Dropbox集成中显示的步骤进行操作。
首先,获取您的本地数据库路径,如下所示:
NSArray *docsDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docPath = [docsDirectory objectAtIndex:0];
databasePath = [docPath stringByAppendingPathComponent:@"filename.sqlite"];
NSLog(@"db path -> %@",databasePath);
然后将该文件上传到dropbox,如下所示:
NSString *fileName = @"filename.sqlite";
NSString *destDir = @"/";
if (appDelegateObj.parentRevId == nil)
{
//Uploads a fresh file.
[appDelegateObj.restClientObj uploadFile:fileName toPath:destDir withParentRev:nil fromPath:databasePath];
}
else
{
// Uploads a file with already existing file
[appDelegateObj.restClientObj uploadFile:fileName toPath:destDir withParentRev:appDelegateObj.parentRevId fromPath:databasePath];
}
这里,parentRevId用于现有文件的标识符。
您可以从Dropbox委托方法获取parentRevId。
然后将Dropbox文件恢复到本地数据库路径,如下所示:
if (appDelegateObj.parentRevId == NULL) // No such File found
{
[SVProgressHUD showErrorWithStatus:@"No Data in Dropbox" maskType:SVProgressHUDMaskTypeBlack]; // Activity Indicator
}
else
{
NSString *destDir = @"/filename.sqlite";
[appDelegateObj.restClientObj loadFile:destDir intoPath:databasePath];
}