【问题标题】:sqlite - database synchro/bakup - windows 10 mobilesqlite - 数据库同步/bakup - Windows 10 移动版
【发布时间】:2016-07-06 14:31:48
【问题描述】:

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

【问题讨论】:

  • 这是一种观点,但实际上数据如此之少,因此制定仅更新更改数据的同步过程是没有意义的

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


【解决方案1】:

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

App 文件夹 是您应用的专用文件夹。应用文件夹通常以您的应用命名,位于用户 OneDrive 的 Apps 文件夹中。如果您请求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 移动应用后端同步。该功能还包括支持在客户端和后端更改相同记录时检测冲突。然后可以在服务器或客户端上处理冲突。

离线同步有很多好处:

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

更多信息,请参考 GitHub 中的Offline Data Sync in Azure Mobile AppsEnable offline sync for your Windows appTodo offline sample

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 2016-02-15
    • 2016-02-24
    相关资源
    最近更新 更多