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

更新 : 2008 年 7 月

Visual Studio 2008 SP1 以降では、同期を構成する場合に、[データ同期の構成] ダイアログ ボックスに加えて、データ ソース構成ウィザードも使用できます。このチュートリアルでは、データ ソース構成ウィザードの実行時に Synchronization Services を組み込むことによって、接続の頻度があまり高くないアプリケーションを開発する詳細な手順について説明します。

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

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

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

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

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

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

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

前提条件

このチュートリアルを完了するには、次の条件が必要です。

  • Northwind サンプル データベースの SQL Server バージョンにアクセスします。詳細については、「方法 : サンプル データベースをインストールする」を参照してください。

  • Visual Studio を実行しているコンピュータに SQL Server Compact 3.5 をインストールする必要があります。

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

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

Cc488233.alert_note(ja-jp,VS.90).gifメモ :

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      または

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

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

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

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

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

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

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

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

    Cc488233.alert_note(ja-jp,VS.90).gifメモ :

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

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

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

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

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

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

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

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

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

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

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

    初回の同期が実行されると、ローカル データベース キャッシュ内の Customers テーブルがサーバー データベースと同期されます。つまり、ローカル SQL Server Compact 3.5 データベース (Northwind.sdf) の Customers テーブルには、サーバー上のデータベースの Customers テーブルに現在含まれているデータが読み込まれます。

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

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

    Cc488233.alert_note(ja-jp,VS.90).gifメモ :

    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. ツールボックスから Form1 に Button コントロールをドラッグします。Name プロパティを「SynchronizeButton」に設定し、Text プロパティを「Synchronize Now」に変更します。

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

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

    Cc488233.alert_note(ja-jp,VS.90).gifメモ :

    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. フォームに戻り、[同期] をクリックします。

  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. フォームに戻り、[同期] をクリックします。

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

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

次の手順

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

参照

処理手順

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

概念

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

SQL Server Compact 3.5 と Visual Studio

変更履歴

日付

履歴

原因

2008 年 7 月

トピックを追加

SP1 機能変更