2016-07-04 8 views
0

私は単純にWindows 10アプリケーションを作成しています - セールスマネージャー。 3つのテーブルのみ。私はローカルsqliteデータベースを持っています。私はこのデータベースをバックアップしたり同期したりする簡単な方法を探しています。 databaeが小さいので、私はフルシンクロについて常に考えています。たとえば、「Send database」をクリックして、デバイスからフルデータをサーバに送信します。 [ダウンロード]をクリックすると、すべてのデータベースがダウンロードされます。私はデータベースを保存するためのアドバイスに感謝しますsqlite - データベースシンクロ/ bakup - windows 10 mobile

+0

本当に小さなデータでは、変更されたデータのみを更新する同期手順を作成する意味がありません – Steve

答えて

0

IMHO、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を使用するように注意してください、あなたが最初にアプリケーションを登録する必要がありますOneDriveの場合はthese stepsに従ってください。

ローカルデータベースを同期するには、Offline Data Sync in Azure Mobile Appsで試すこともできます。これはデータベースのバックアップよりも強力です。

アプリがオフラインモードでも、ユーザーはデータを作成して変更することができますが、これはローカルストアに保存されます。アプリがオンラインに戻ると、ローカルの変更をAzure Mobile Appバックエンドと同期させることができます。この機能には、クライアントとバックエンドの両方で同じレコードが変更された場合の競合の検出もサポートされています。競合は、サーバーまたはクライアントのいずれかで処理できます。

オフライン同期は多くの利点があります。

  • は、デバイス
  • 上でローカルサーバーのデータをキャッシュすることで、アプリの応答性を向上させ、ネットワークの問題が
  • がある場合、エンドユーザーの許可便利残る堅牢なアプリケーションを作成します。ネットワークアクセスがなくてもデータを作成したり変更したりすることができます。
  • 2台のデバイスで同じレコードが変更された場合、複数のデバイス間でデータを同期して競合を検出します。
  • 高遅延または計量ネットワーク

  • リミットネットワークの使用は、より多くの情報については、Offline Data Sync in Azure Mobile AppsEnable offline sync for your Windows app、およびGitHubの中Todo offline sampleを参照してください。

  • 関連する問題