データ アプリケーションの作成

Visual Studio には、データにアクセスするアプリケーションの作成に役立つ多くのデザイン時ツールが用意されています。 ここでは、データを操作するアプリケーションの作成に関する基本的なプロセスの概要について説明します。 この説明はデータ アプリケーションの作成に関連する多くの他のヘルプ トピックにリンクするための情報源となることを目的としており、詳細説明の多くは省略しています。

Visual Studio でデータにアクセスするアプリケーションを開発するにしたがって、さまざまな要件が発生します。 場合によっては、データをフォームに表示するだけで十分です。 また、他のアプリケーションまたはプロセスと情報を共有できるしくみが必要な場合もあります。

データに対する操作の種類に関係なく、理解しておく必要のある一定の基本的な概念があります。 多くの場合、データ処理に関する一部の詳細事項については知る必要はありません (たとえば、データベースをプログラムで作成する必要はありません)。しかし、基本的なデータ概念や、Visual Studio で利用できるデータ ツール (ウィザードとデザイナー) について理解しておくと非常に役立ちます。

一般的なデータ アプリケーションは、次の図に示すようなプロセスの大部分を利用します。

データ サイクル

データ サイクル グラフィック

アプリケーションを作成するときは、実行する必要のあるタスクについて検討する必要があります。 次の各セクションは、利用できる Visual Studio ツールとオブジェクトを見つけるのに役立ちます。

注意

Visual Studio には、前の図に示されている複数のプロセスを簡略化するためのウィザードが用意されています。たとえば、データ ソース構成ウィザードを実行すると、データに接続するのに十分な情報をアプリケーションに提供し、データを受け取るための型指定されたデータセットを作成して、アプリケーションにデータを読み込むことができます。

Visual Studio を利用してデータ アプリケーションを開発する方法については、「チュートリアル : 単純なデータ アプリケーションの作成」を参照してください。

データへの接続

アプリケーションにデータを読み込んで変更内容をデータ ソースに返送するには、なんらかの双方向通信を確立する必要があります。 一般にこの双方向通信は、データ モデルのオブジェクトによって処理されます。

たとえば、TableAdapter はデータセットを使用するアプリケーションをデータベースに接続し、ObjectContext は Entity Framework のエンティティをデータベースに接続します。 Visual Studio には、アプリケーションで使用できる接続の作成を支援するツールがいくつか用意されています。 アプリケーションをデータに接続する方法の詳細については、「Visual Studio でのデータへの接続」を参照してください。

データセットを使用して、アプリケーションをデータベースのデータに接続する方法については、「チュートリアル: データベース内のデータへの接続 (Windows フォーム)」を参照してください。

アプリケーションでデータを受け取るための準備

アプリケーションで非接続型データ モデルを使用する場合、データを操作するときにアプリケーションにデータを一時的に格納する必要があります。 Visual Studio には、アプリケーションがデータの一時的な格納に使用するオブジェクト (データセット、エンティティ、および LINQ to SQL オブジェクト) を作成するのに役立つツールが用意されています。

注意

一般に、非接続型データ モデルを使用するアプリケーションは、データベースに接続し、クエリを実行してアプリケーションにデータを読み込み、データベースから切断し、オフラインでデータを処理した後に再接続してデータベースを更新します。

アプリケーションで型指定されたデータセットを作成する方法の詳細については、「アプリケーションでデータを受け取る準備」を参照してください。 n 層アプリケーションでデータセットを使用する方法の詳細については、「方法 : データセットと TableAdapters を別々のプロジェクトに分離する」を参照してください。

データセットを作成する方法については、「チュートリアル : データセット デザイナーでのデータセットの作成」を参照してください。

LINQ to SQL オブジェクトを作成する方法については、「チュートリアル : LINQ to SQL クラスの作成 (O/R デザイナー)」を参照してください。

アプリケーションへのデータのフェッチ

アプリケーションで非接続型データ モデルを使用するかどうかにかかわらず、アプリケーションにデータをフェッチできる必要があります。 データベースに対してクエリまたはストアド プロシージャを実行することにより、アプリケーションにデータを読み込みます。 データをデータセットに格納するアプリケーションでは、TableAdapter を使用してクエリとストアド プロシージャを実行するのに対し、データをエンティティに格納するアプリケーションでは LINQ to Entities を使用するか、エンティティをストアド プロシージャに直接接続することによってクエリを実行します。 TableAdapter を使用するクエリを作成および編集する方法の詳細については、「方法 : TableAdapter クエリを作成する」および「方法 : TableAdapter クエリを編集する」を参照してください。

データをデータセットに読み込む方法、およびクエリとストアド プロシージャを実行する方法の詳細については、「アプリケーションへのデータのフェッチ」を参照してください。

データセットにデータを読み込む方法については、「チュートリアル: Windows フォームでのデータの表示」を参照し、フォーム読み込みイベント ハンドラーのコードを確認してください。

LINQ to SQL オブジェクトにデータを読み込む方法については、「チュートリアル : LINQ to SQL クラスの作成 (O/R デザイナー)」を参照してください。

SQL クエリの作成と実行の方法については、「方法 : 行を返す SQL ステートメントを作成および実行する」を参照してください。

ストアド プロシージャを実行する方法については、「方法 : 行を返すストアド プロシージャを実行する」を参照してください。

フォームでのデータの表示

アプリケーションにデータを読み込んだら、通常はそのデータをフォームに表示して、ユーザーが表示または変更できるようにします。 Visual Studio には、[データ ソース] ウィンドウが用意されています。このウィンドウからフォームに項目をドラッグして、データを表示するデータ バインディング コントロールを自動的に作成できます。 データ バインディングとユーザーへのデータ表示の詳細については、「Visual Studio でのデータへのコントロールのバインド」を参照してください。

ユーザーにデータを表示する方法について学ぶには、次のチュートリアルの手順を実行してください (特に、[データ ソース] ウィンドウから項目をドラッグするプロセスに注目してください)。

アプリケーションでのデータ編集

データがユーザーに表示されると、ユーザーは新しいレコードを追加したり、レコードの編集や削除を行ってそのデータを変更してから、データベースにデータを返送する場合があります。

データセットに読み込まれたデータの操作の詳細については、「アプリケーションでのデータ編集」を参照してください。

データの検証

データを変更する場合、通常は変更内容を検証してからデータセットに値を戻したりデータベースに書き込むことができるようにします。 検証は、これらの新しい値がアプリケーションの要件を満たすことを検査するプロセスの名前です。 値を変更するときにアプリケーションで値を検査するロジックを追加できます。 Visual Studio には、列および行の変更時にデータを検証するコードを追加するためのツールが用意されています。 詳細については、「データの検証」を参照してください。

アプリケーションにデータの検証を追加する方法については、「チュートリアル : データセットへの検証の追加」を参照してください。

n 層アプリケーションに分離されたデータセットに検証を追加する方法については、「方法 : n 層データセットに検証を追加する」を参照してください。

データの保存

アプリケーションで変更を行って変更内容を検証した後、通常は変更内容をデータベースに返送します。 データをデータセットに格納するアプリケーションは、通常 TableAdapterManager を使用してデータを保存します。 詳細については、「TableAdapterManager の概要」を参照してください。 Entity Framework アプリケーションでは、SaveChanges メソッドを使用してデータを保存します。

更新されたデータをデータベースに返送する方法の詳細については、「データの保存」を参照してください。

更新済みのデータをデータセットからデータベースに返送する方法については、「チュートリアル : 関連するデータ テーブルからのデータの保存 (階層更新)」を参照してください。

関連トピック