次の方法で共有


チュートリアル : データ ソース構成ウィザードを使用した接続の頻度があまり高くないアプリケーションの作成

このチュートリアルでは、データ ソース構成ウィザードの実行時に Synchronization Services を組み込むことによって、接続の頻度があまり高くないアプリケーションを開発する詳細な手順について説明します。

接続の頻度があまり高くないアプリケーションとは、リモート データに常にアクセスできるとは限らないアプリケーションのことです。 これらのアプリケーションは常にアクセスできるとは限らないため、クライアントに存在するローカル データベースのデータを使用し、リモート データベースとローカル データベースの間でデータを定期的に同期します。 ローカル データベースとリモート データベースの間のデータの同期は、Microsoft Synchronization Services for ADO.NET (Microsoft.Synchronization.Data 名前空間) によって行います。 この同期を新規に作成するには、[新しい項目の追加] ダイアログ ボックスでローカル データベース キャッシュをアプリケーションに追加する方法と、データ ソース構成ウィザードを実行する方法があります。 このチュートリアルでは、後者について説明します。

このチュートリアルでは次のタスクを行います。

  • 新しい Windows フォームアプリケーションを作成します。

  • データ ソース構成ウィザードを実行して、ローカル データベース キャッシュを持つ型指定されたデータセットの作成と構成を行います。

  • データの表示および同期の確認を行う Windows フォームを作成します。

  • データベース間の同期を開始するコードを追加します。

  • 同期されたレコードの数に関する情報を表示するメッセージ ボックスを追加します。

必須コンポーネント

このチュートリアルを実行するための要件は次のとおりです。

Windows フォーム アプリケーションの作成

Windows フォームにデータを表示するので (同期が成功したことを検証するため)、このチュートリアルでは最初に新しい Windows フォーム アプリケーションを作成します。

注意

次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。

新しい Windows フォーム アプリケーションを作成するには

  1. [ファイル] メニューで新しいプロジェクトを作成します。

  2. プロジェクトに「OCSWalkthrough2」という名前を付けます。

  3. [Windows フォーム アプリケーション] テンプレートをクリックし、[OK] をクリックします。 詳細については、「クライアント アプリケーションの開発」を参照してください。

    OCSWalkthrough2 プロジェクトが作成され、ソリューション エクスプローラーに追加されます。

ローカル データベース キャッシュが含まれるデータ ソースの作成

このチュートリアルでは、データ ソース構成ウィザードを使用してアプリケーションに Synchronization Services を組み込むので、次の手順はウィザードの起動です。 この手順では、ウィザードを起動し、Northwind サンプル データベース内の Customers テーブルに基づくデータセットを作成します。 データセットに追加するデータベース テーブルを選択するときに、ローカル データ キャッシュを有効にするオプションを選択します。

ローカル データベース キャッシュが含まれるデータ ソースを作成するには

  1. [データ] メニューの [データ ソースの表示] をクリックします。

  2. [データ ソース] ウィンドウで、[新しいデータ ソースの追加] をクリックしてデータ ソース構成ウィザードを起動します。

  3. [データ ソースの種類を選択] ページで、[データベース] を選択されている既定値のままにし、[次へ] をクリックします。

  4. [データ接続の選択] ページで、次のいずれかの操作を行います。

    • SQL Server バージョンの Northwind サンプル データベースへのデータ接続がドロップダウン リストに表示されている場合は、これを選択します。

      または

    • [新しい接続] をクリックして [データ ソースの選択] ダイアログ ボックスまたは [接続の追加]/[接続の変更] ダイアログ ボックスを開き、SQL Server バージョンの Northwind データベースへの新しい接続を作成します。 詳細については、「[接続の追加] ダイアログ ボックスと [接続の変更] ダイアログ ボックス (一般)」を参照してください。

  5. データベースにパスワードが必要な場合は、該当するオプションを選択して重要情報を含め、[次へ] をクリックします。

  6. [アプリケーション構成ファイルに接続文字列を保存] ページで、[次へ] をクリックします。

  7. [データベース オブジェクトの選択] ページの [テーブル] ノードを展開します。

  8. Customers テーブルを選択します。

  9. [ローカル データベース キャッシュを有効にする] をオンにします。

  10. [データベース オブジェクトの選択] ページで [次へ] をクリックします

  11. [キャッシュするテーブルの選択] ページで Customers テーブルを選択します。

    注意

    [同期モード] は既定値の増分のままにします。増分モードでは、最後の同期以降に行われた変更のみを同期します。スナップショット モードでは、ローカルにキャッシュされたテーブル全体が、サーバーにある現在のテーブルで置き換えられます。どちらを選択しても、初回時はテーブル全体がローカル データベース キャッシュに読み込まれ、必ず現在のデータ一式から開始することになります。

  12. [完了] をクリックします。

  13. ローカルにキャッシュされたいずれかのテーブルの同期モードが [初回同期後の新規および増分の変更] に設定されている場合、SQL Server データベースについて更新が必要となり、[SQL スクリプト生成] ダイアログ ボックスが開きます。 既定では、このダイアログ ボックスの両方のオプションが選択されています。

    • [増分の変更のためにサーバーを更新する]。 サーバーを自動的に更新して、このダイアログ ボックスを閉じた直後から増分の同期を有効にするには、このオプションを選択します。

    • [SQL スクリプトを後で使用するためプロジェクトに保存する]。 生成された SQL スクリプトをプロジェクトへ追加して、後で SQL Server データベースで実行できるようにするには、このオプションを選択します。 元に戻すスクリプトも生成されてプロジェクトに追加されます。

  14. [OK] をクリックします。

アプリケーションでの同期の有効化

前の手順でデータ ソース構成ウィザードの実行を完了すると、データ同期が構成されます。 これで、アプリケーションに次のものが含まれました。

  • Northwind データベースのローカル バージョン (Northwind.sdf)。

  • データ同期設定情報ファイル (NorthwindCache.sync)。

  • データ ソース構成ウィザードによって生成された、型指定されたデータセット NorthwindDataSet.xsd。 これには、ローカル データベースからデータが読み込まれた Customers テーブルが含まれます。

    初回の同期が実行されると、ローカル データベース キャッシュ内の Customers テーブルがサーバー データベースと同期されます。 つまり、サーバー上のデータベースの [得意先] テーブルに現在のデータで [得意先] テーブルで、ローカルの SQL Server コンパクト データベース (Northwind.sdf) が表示されます。

  • SQLScripts フォルダー。トラッキング列、削除された項目テーブル、サーバーでの変更を追跡する必要なトリガーの作成に使用されるスクリプトが含まれています。

  • SQLUndoScripts フォルダー。トラッキング列、削除された項目テーブル、サーバーに追加された必要なトリガーを削除するスクリプトが含まれています。

    注意

    SQL スクリプトは、サーバーで変更を加える必要がある場合にのみ作成されます。削除された項目テーブルとトラッキング列が既にサーバーにある場合は、スクリプトは作成されません。

  • 次の Microsoft Synchronization Services for ADO.NET DLL への参照。

    • Microsoft.Synchronization.Data

    • Microsoft.Synchronization.Data.Server

    • Microsoft.Synchronization.Data.SqlServerCe

アプリケーションへの同期機能の追加

データ同期を構成した後も、アプリケーションに同期機能を追加する必要があります。 具体的には、同期処理を開始するコードを追加する必要があります。 さらに、データを表示し、同期処理を開始するコントロールもフォームに追加します。

まず、[データ ソース] ウィンドウから [Customers] ノードをフォームにドラッグして、DataGridView コントロールを追加します。 DataGridView には、ローカル データベース キャッシュ (プロジェクトに置かれている Northwind.sdf データベース) から Customers テーブルが表示されるので、ローカル データベースとリモート データベースの間でデータが同期されていることを検証できます。 同期処理を開始するボタンを追加することもできます。

データ バインド フォームを作成してデータ同期を開始および検証するには

  1. [データ ソース] ウィンドウから Form1[Customers] ノードをドラッグします。

  2. ツールボックスから Form1Button コントロールをドラッグします。 Name プロパティを「SynchronizeButton」に設定し、Text プロパティを「Synchronize Now」に変更します。

  3. [Synchronize Now] をダブルクリックし、ダブルクリック イベント ハンドラーを作成して、コード エディターでフォームを開きます。

  4. 同期処理を開始するコードを追加し、データセットで Customers テーブルを再入力します。 イベント ハンドラーのコードは次のようになります。

    注意

    syncStats 変数を宣言するコードの行については、このドキュメントで後に説明します。

    ' Call the Synchronize method to synchronize
    ' data between local and remote databases.
    Dim syncAgent As NorthwindCacheSyncAgent = New NorthwindCacheSyncAgent()
    Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics = _
        syncAgent.Synchronize()
    
    ' After synchronizing the data, refill the
    ' table in the dataset.
    Me.CustomersTableAdapter.Fill(NorthwindDataSet.Customers)
    
    // Call the Synchronize method to synchronize
    // data between local and remote databases.
    NorthwindCacheSyncAgent syncAgent = new NorthwindCacheSyncAgent();
    Microsoft.Synchronization.Data.SyncStatistics syncStats;
    syncStats = syncAgent.Synchronize();
    // After synchronizing the data, refill the
    // table in the dataset.
    this.customersTableAdapter.Fill(this.northwindDataSet.Customers);
    

アプリケーションのテスト

アプリケーションをテストするには

  1. F5 キーを押します。

  2. アプリケーションを実行している状態で、サーバー エクスプローラーまたはデータベース エクスプローラー (または他のデータベース管理ツール) を使用し、リモート サーバー データベースに接続してレコードを変更します。

    1. サーバー エクスプローラーまたはデータベース エクスプローラーで、リモート データベース サーバー (Northwind.sdf への接続ではありません) 上の Customers テーブルを探します。

    2. Customers テーブルを右クリックし、[テーブル データの表示] をクリックします。

    3. 1 つ以上のレコードを変更し、変更をコミットします (変更した行以外に移動します)。

  3. フォームに戻り、[Synchronize Now] をクリックします。

  4. リモート データベースへの変更がローカル データベースと同期され、フォームに表示されることを検証します。

  5. フォームを閉じます (デバッグを停止します)。

同期からの情報の取得

Synchronize メソッドの呼び出しは、同期処理を開始するだけではありません。 Synchronize メソッドは、同期に関する情報にアクセス可能な SyncStatistics オブジェクトも返します。

同期の統計にアクセスするには

  • コード エディターで Form1 を開き、前の手順で追加したコードの下にある SynchronizeButton_Click イベント ハンドラーの末尾に次のコードを追加します。

    MessageBox.Show("Changes downloaded: " & _
    syncStats.TotalChangesDownloaded.ToString)
    
    MessageBox.Show("Changes downloaded: " +
        syncStats.TotalChangesDownloaded.ToString());
    

アプリケーションのテスト

アプリケーションをテストするには

  1. F5 キーを押します。

  2. アプリケーションを実行している状態で、サーバー エクスプローラーまたはデータベース エクスプローラー (または他のデータベース管理ツール) を使用し、リモート サーバー データベースに接続してレコードを変更します。

    1. サーバー エクスプローラーまたはデータベース エクスプローラーで、リモート データベース サーバー (Northwind.sdf への接続ではありません) 上の Customers テーブルを探します。

    2. Customers テーブルを右クリックし、[テーブル データの表示] をクリックします。

    3. 1 つ以上のレコードを変更し、変更をコミットします (変更した行以外に移動します)。

  3. フォームに戻り、[Synchronize Now] をクリックします。

  4. 同期されたレコードに関する情報が含まれるメッセージ ボックスが表示されます。

  5. リモート データベースへの変更がローカル データベースと同期され、フォームに表示されることを検証します。

次の手順

アプリケーションの要件によっては、アプリケーションにローカル データベース キャッシュを構成した後で、さらに操作を追加する必要があります。 たとえば、このアプリケーションに対して次のような拡張を行うことができます。

参照

処理手順

チュートリアル : 接続の頻度があまり高くないクライアント アプリケーションとローカル データベースの配置

概念

接続の頻度があまり高くないアプリケーションの概要

SQL Server Compact 4.0 と Visual Studio