【问题标题】:How to email sqlite database of Iphone app from itself?如何从自身通过电子邮件发送 Iphone 应用程序的 sqlite 数据库?
【发布时间】:2012-09-28 12:52:55
【问题描述】:

在我当前的应用程序中,我正在添加数据备份和恢复功能。 用户可以创建数据库备份并通过电子邮件发送。 在恢复功能中,用户可以从电子邮件中导入数据库并替换当前的。

我能够创建数据库文件的备份和恢复。 在恢复中,我只是将文件从我的电子邮件复制到应用程序文档文件替换当前文件。 问题是在我的数据库备份代码中,sqlite 数据库被转换为 NSData。我不想被转换并且需要通过电子邮件发送确切的 sqlite 文件。

这是我目前用于通过电子邮件发送 sqlite 数据库的代码

-(void)backUpData
{

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *txtPath = [documentsDirectory stringByAppendingPathComponent:@"/DemoApp.sqlite"];

NSURL *newUrl = [[NSURL alloc] initWithString:
[txtPath stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];

NSData *sqliteData = [[NSData alloc] initWithContentsOfURL:newUrl];

//send sqliteData to email composer delegate to attach it as attachment
[self showPicker:sqliteData];

}

如何在不将其转换为 NSData 的情况下通过电子邮件发送 sqlite db?

【问题讨论】:

    标签: iphone ios database sqlite export


    【解决方案1】:

    在创建提供路径而不是 url 的 NSData 对象时使用 dataWithContentsOfFile。例如:

    NSString *dbPath = [[NSBundle mainBundle] pathForResource:@"Pubs" ofType:@"db"];
    NSData   *myData = [NSData dataWithContentsOfFile:dbPath];
    
    
    [mailComposeVC addAttachmentData:myData mimeType:@"application/x-sqlite3" fileName:@"Pubs.db"];
    

    【讨论】:

    • 我用过这个,但是即使我在我的 sqlite 数据库中添加了很多数据,它也总是使文件大小相同。
    • 在设备上无法写入捆绑包中的文件,因此您确定数据已添加到数据库中吗?收到电子邮件后,保存附件并在终端会话中运行 sqlite3 以查找新记录。
    • 您可以附加 sqlite 文件,但您永远无法打开它,例如,通过 MAC 上的 LiYa 应用程序
    猜你喜欢
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 2013-05-13
    • 2019-12-04
    • 1970-01-01
    相关资源
    最近更新 更多