sqlite - 数据库同步/ bakup - windows 10 mobile

时间:2016-07-04 13:39:34

标签: c# sqlite synchronization windows-10-universal

我正在制作简单的Windows 10应用程序 - 销售经理。只有3张桌子。我有本地的sqlite数据库。我正在寻找备份此数据库或同步的简便方法。由于数据库很小,我总是考虑完全同步,所以例如:我点击“发送数据库”#39;设备的完整数据发送到服务器。当我点击下载'将下载所有数据库。我将很感激建议只是保存数据库的方法

1 个答案:

答案 0 :(得分:0)

恕我直言,您可以利用OneDrive's App Folder备份您的SQLite数据库。

  

应用程序文件夹是适用于您应用的专用特殊文件夹。应用程序文件夹通常以您的应用程序命名,位于用户OneDrive的应用程序文件夹中。如果您请求onedrive.appfolder权限范围并且用户对其进行授权,则您的应用会获得对此文件夹的读写权限。

对于C#,您可以在应用程序中使用OneDrive SDK for CSharp。例如,您可以发送数据库文件,如下所示:

private async Task<Item> UploadDBFile()
{
    StorageFile DBFile = await ApplicationData.Current.LocalFolder.GetFileAsync("db.sqlite");

    var oneDriveClient = await OneDriveClientExtensions.GetAuthenticatedUniversalClient(new[] { "onedrive.appfolder" });

    using (var contentStream = await DBFile.OpenStreamForReadAsync())
    {
        return await oneDriveClient.Drive.Special.AppRoot.ItemWithPath("backup.sqlite").Content.Request().PutAsync<Item>(contentStream);
    }
}

下载数据库如:

private async Task DownloadDBFile()
{
    var oneDriveClient = await OneDriveClientExtensions.GetAuthenticatedUniversalClient(new[] { "onedrive.appfolder" });

    using (var contentStream = await oneDriveClient.Drive.Special.AppRoot.ItemWithPath("backup.sqlite").Content.Request().GetAsync())
    {
        StorageFile downloadedFile = await ApplicationData.Current.LocalFolder.CreateFileAsync("DownloadedDB.sqlite",
CreationCollisionOption.ReplaceExisting);
        using (var writerStream = await downloadedFile.OpenStreamForWriteAsync())
        {
            contentStream.CopyTo(writerStream);
        }
    };
}

请注意,要在您的应用程序中使用OneDrive API,您需要先按照these steps注册OneDrive的应用程序。

要同步本地数据库,您还可以尝试使用Offline Data Sync in Azure Mobile Apps。这比备份数据库更强大。

  

当您的应用处于离线模式时,用户仍然可以创建和修改数据,这些数据将保存到本地商店。当应用程序重新联机时,它可以将本地更改与Azure Mobile App后端同步。该功能还包括支持在客户端和后端同时更改相同记录时检测冲突。然后可以在服务器或客户端上处理冲突。

     

脱机同步有许多好处:

     
      
  • 通过在设备上本地缓存服务器数据来提高应用响应能力
  •   
  • 创建在网络问题时仍然有用的强大应用
  •   
  • 即使没有网络访问权限,也允许最终用户创建和修改数据,支持连接很少或没有连接的方案
  •   
  • 跨多个设备同步数据,并在两台设备修改同一​​记录时检测冲突
  •   
  • 限制高延迟或计量网络上的网络使用
  •   

有关详细信息,请参阅GitHub中的Offline Data Sync in Azure Mobile AppsEnable offline sync for your Windows appTodo offline sample