チュートリアル : 接続の頻度があまり高くないアプリケーションの作成
接続の頻度があまり高くないアプリケーションとは、リモート データに常にアクセスできるとは限らないアプリケーションのことです。 これらのアプリケーションは常にアクセスできるとは限らないため、クライアントに存在するローカル データベースのデータを使用し、リモート データベースとローカル データベースの間でデータを定期的に同期します。 ローカル データベースとリモート データベースの間のデータの同期は、Microsoft Synchronization Services for ADO.NET (Microsoft.Synchronization.Data 名前空間) によって行います。 この同期は、[データ同期の構成] ダイアログ ボックスで構成されます。
同期を構成する場合、[データ同期の構成] ダイアログ ボックスに加えて、データ ソース構成ウィザードも使用できます。 型指定されたデータセットの構成時に、ウィザードの [データベース オブジェクトの選択] ページで、[ローカル データベース キャッシュを有効にする] をオンにします。 詳細については、「チュートリアル : データ ソース構成ウィザードを使用した接続の頻度があまり高くないアプリケーションの作成」を参照してください。
ここでは、接続の頻度があまり高くないアプリケーションを開発する方法の詳細な手順について説明します。
このチュートリアルでは次のタスクを行います。
新しい Windows フォームアプリケーションを作成します。
新しいローカル データベース キャッシュをプロジェクトに追加します。
次のタスクを実行する同期設定を構成します。
サーバー データベースへのデータ接続を設定する。
新しいローカル データベースを作成する同期を構成する。
アプリケーションと同期するテーブルをデータベースで選択する。
DataGridView コントロールをフォームに追加して、ローカル データベースのデータを表示します。
データベース間の同期を開始するコードを追加します。
同期されたレコードの数に関する情報を表示するメッセージ ボックスを追加します。
必須コンポーネント
このチュートリアルを実行するための要件は次のとおりです。
Northwind サンプル データベースの SQL Server バージョンにアクセスします。 詳細については、「方法 : サンプル データベースをインストールする」を参照してください。
Visual Studio を実行しているコンピューターに SQL Server Compact 3.5 をインストールする必要があります。
Windows フォーム アプリケーションの作成
Windows フォームにデータを表示するので (同期が成功したことを検証するため)、このチュートリアルでは最初に新しい Windows フォーム アプリケーションを作成します。
注意
お使いのマシンで、Visual Studio ユーザー インターフェイスの一部の要素の名前や場所が、次の手順とは異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 詳細については、「Visual Studio の設定」を参照してください。
新しい Windows フォーム アプリケーションを作成するには
[ファイル] メニューで新しいプロジェクトを作成します。
プロジェクトに「OCSWalkthrough」という名前を付けます。
注意
[データ同期の構成] ダイアログ ボックスは、Visual Basic プロジェクトおよび C# プロジェクトでサポートされるので、新しいプロジェクトはどちらかの言語で作成してください。
[Windows フォーム アプリケーション] テンプレートをクリックし、[OK] をクリックします。 詳細については、「Windows ベースのアプリケーションの作成」を参照してください。
OCSWalkthrough プロジェクトが作成され、ソリューション エクスプローラーに追加されます。
プロジェクトへの同期ファイルの追加
接続の頻度があまり高くないアプリケーションを作成する次の手順として、クライアントにローカル データベースを追加 (または作成) します。 リモート データベースと同期可能なローカル データベースを追加するには、ローカル データベース キャッシュ テンプレートをプロジェクトに追加します。 ローカル データベース キャッシュ ファイル (.sync ファイル) は、[新しい項目の追加] ダイアログ ボックスを使用してプロジェクトに追加します。
同期設定ファイルをプロジェクトに追加するには
[プロジェクト] メニューの [新しい項目の追加] をクリックします。
[ローカル データベース キャッシュ] テンプレートをクリックし、[名前] ボックスに「NorthwindCache.sync」と入力します。
[追加] をクリックします。
NorthwindCache.sync ファイルがソリューション エクスプローラーに追加され、[データ同期の構成] ダイアログ ボックスが表示されます。
データ同期の構成
データ同期の構成は、次のタスクで構成されています。
リモート データベースへのデータ接続を行う。 これはサーバー接続です。
ローカル データベースへのデータ接続を行うか、またはこのチュートリアルに示すように、クライアントで新しいデータベースを作成する。 これはクライアント接続です。
アプリケーションで使用するリモート接続からテーブルを選択する。 これらは "キャッシュされたテーブル" と呼ばれます。
ローカル データベースに追加したテーブルごとに、変更の調整に必要な列と、削除した項目を格納するテーブルを選択する。 各テーブルには、新しいレコードと変更されたレコードを追跡する特定のレコードに加えて、削除したレコードを追跡するテーブルが必要です。
データ接続の設定
次に、サーバー接続を設定し、リモート データベース (アプリケーション外部のデータベース) に接続します。 クライアント接続は既存の SQL Server Compact 3.5 データベースに接続できます。または、[データ同期の構成] ダイアログ ボックスで新しいローカル データベースを作成することもできます。 このチュートリアルでは、サーバー データベースへの接続を作成し、既定のクライアント接続をそのままにして、プロジェクトで新しいクライアント データベース (Northwind.sdf) を自動的に作成します。
サーバー データベースおよびクライアント データベースへのデータ接続を設定するには
Northwind データベースの SQL Server バージョンへのサーバー接続を選択するか、[新規作成] をクリックし、Northwind データベースの SQL Server バージョンへの新しい接続を作成します。 詳細については、「方法 : Northwind データベースへのデータ接続を作成する」を参照してください。
[クライアント接続] の [Northwind.sdf (新規)] の既定値をそのままにします。 これにより、新しい SQL Server Compact 3.5 データベースが作成され、プロジェクトに追加されます。
サーバー接続を選択すると、[データ同期の構成] ダイアログ ボックスによりサーバー上のリモート データベースに対して使用可能なテーブルの一覧が照会され、一覧が取得されると [追加] ボタンが有効になります。
注意
[OK] ボタンは有効にならないことに注意してください。 これは、同期するテーブルが選択されていないためです。 次のセクションでは、テーブルを追加して [OK] ボタンを有効にする方法について説明します。
オフラインで使用するテーブルの選択と構成
次に、クライアント データベースに追加してアプリケーションと同期するテーブルを選択します。 クライアント データベースに追加したテーブルごとに、変更の調整に必要なトラッキング列と、削除された項目を格納するテーブルを選択します。 既定の設定をそのままにした場合、[データ同期の構成] ダイアログ ボックスによりトラッキング列と削除された項目テーブルが作成されます。 このチュートリアルでは、既定の設定を使用します。
ローカル キャッシュ用にテーブルを設定するには
[追加] をクリックして [オフライン使用のためのテーブルの構成] ダイアログ ボックスを開きます。
Customers テーブルを選択して確認します。
すべての既定値をそのままにします。 [OK] をクリックします。
Customers テーブルが [キャッシュされたテーブル] ボックスの一覧に追加されます。
[データ同期の構成] ダイアログ ボックスで、[OK] をクリックします。
トラッキング列と削除された項目テーブルがサーバーに作成されます。 Northwind.sdf データベースがプロジェクトに作成され、初めて同期されます。
データ ソース構成ウィザードで Customers テーブルを選択して確認し、[完了] をクリックします。
NorthwindDataSet.xsd がプロジェクトに追加され、すべてのダイアログ ボックスが閉じます。
アプリケーションでの同期の有効化
前の手順を完了すると、データ同期が構成されます。 この時点で、アプリケーションに存在するものは次のとおりです。
ローカル Northwind データベース (Northwind.sdf)。
データ同期設定情報 (NorthwindCache.sync)。
データ ソース構成ウィザードによって生成された、型指定されたデータセット NorthwindDataSet.xsd。 これには、ローカル データベースから取得された Customers テーブルが含まれます。
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 テーブルが表示されるので、ローカル データベースとリモート データベースの間でデータが同期されていることを検証できます。 同期処理を開始するボタンを追加することもできます。
データ バインド フォームを作成してデータ同期を開始および検証するには
[データ ソース] ウィンドウから [Form1] に [Customers] ノードをドラッグします。
ツールボックスから [Form1] に Button コントロールをドラッグします。 Name プロパティを「SynchronizeButton」に設定し、Text プロパティを「Synchronize Now」に変更します。
[Synchronize Now] をダブルクリックし、ダブルクリック イベント ハンドラーを作成して、コード エディターでフォームを開きます。
同期処理を開始するコードを追加し、データセットで 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);
アプリケーションのテスト
アプリケーションをテストするには
F5 キーを押します。
アプリケーションを実行している状態で、サーバー エクスプローラーまたはデータベース エクスプローラー (または他のデータベース管理ツール) を使用し、リモート サーバー データベースに接続してレコードを変更します。
サーバー エクスプローラーまたはデータベース エクスプローラーで、リモート データベース サーバー (Northwind.sdf への接続ではありません) 上の Customers テーブルを探します。
Customers テーブルを右クリックし、[テーブル データの表示] をクリックします。
1 つ以上のレコードを変更し、変更をコミットします (変更した行以外に移動します)。
フォームに戻り、[Synchronize Now] をクリックします。
リモート データベースへの変更がローカル データベースと同期され、グリッドに表示されることを検証します。
フォームを閉じます (デバッグを停止します)。
同期からの情報の取得
Synchronize メソッドの呼び出しは、同期処理を開始するだけではありません。 Synchronize メソッドは、同期に関する情報にアクセス可能な SyncStatistics オブジェクトも返します。
同期の統計にアクセスするには
コード エディターで [Form1] を開き、前の手順で追加したコードの下にある SynchronizeButton_Click イベント ハンドラーの一番下に次のコードを追加します。
MessageBox.Show("Changes downloaded: " & syncStats.TotalChangesDownloaded.ToString)
MessageBox.Show("Changes downloaded: " + syncStats.TotalChangesDownloaded.ToString());
アプリケーションのテスト
アプリケーションをテストするには
F5 キーを押します。
アプリケーションを実行している状態で、サーバー エクスプローラーまたはデータベース エクスプローラー (または他のデータベース管理ツール) を使用し、リモート サーバー データベースに接続してレコードを変更します。
サーバー エクスプローラーまたはデータベース エクスプローラーで、リモート データベース サーバー (Northwind.sdf への接続ではありません) 上の Customers テーブルを探します。
Customers テーブルを右クリックし、[テーブル データの表示] をクリックします。
1 つ以上のレコードを変更し、変更をコミットします (変更した行以外に移動します)。
フォームに戻り、[Synchronize Now] をクリックします。
同期されたレコードに関する情報が含まれるメッセージ ボックスが表示されます。
リモート データベースへの変更がローカル データベースと同期され、グリッドに表示されることを検証します。
次の手順
アプリケーションの要件によっては、アプリケーションにローカル データベース キャッシュを構成した後で、さらに操作を追加する必要があります。 たとえば、このアプリケーションに対して次のような拡張を行うことができます。
双方向同期を実装して、ローカル データベース キャッシュでの変更をサーバーにアップロードできるようにします。 詳細については、「方法 : ローカル データベースとリモート データベースで双方向同期を構成する」を参照してください。
クライアント アプリケーションを、ローカル データベース キャッシュと共に配置します。 詳細については、「チュートリアル : 接続の頻度があまり高くないクライアント アプリケーションとローカル データベースの配置」を参照してください。
参照
処理手順
チュートリアル : 接続の頻度があまり高くないクライアント アプリケーションとローカル データベースの配置