次の方法で共有


.NET Framework アプリケーションで TableAdapters を作成および構成する

DataSet クラスと関連クラスは、アプリケーションがデータベースから切断されている間にアプリケーションがメモリ内のデータを操作できるようにする、2000 年代初頭のレガシ .NET Framework テクノロジです。 このテクノロジは、ユーザーがデータを変更し、変更をデータベースに保持できるアプリに特に役立ちます。 データセットは実証済みの成功したテクノロジですが、新しい .NET アプリケーションには Entity Framework Core を使用することをお勧めします。 Entity Framework は、オブジェクト モデルとして表形式データを操作するより自然な方法を提供し、よりシンプルなプログラミング インターフェイスを備えています。

TableAdapters を使用すると、アプリケーションとデータベース間の通信が可能になります。 データベースに接続し、クエリまたはストアド プロシージャを実行し、新しいデータ テーブルを返すか、既存の DataTable クラス インスタンスに返されたデータを入力します。 TableAdapters は、更新されたデータをアプリケーションからデータベースに送り返すこともできます。

TableAdapters は、次のいずれかのアクションを実行すると作成されます。

  • データベース オブジェクトをサーバー エクスプローラーからデータセット デザイナーにドラッグします。

  • TableAdapter オブジェクトをツールボックスからデータセット デザイナー画面の空の領域にドラッグし、データ ソースを構成します。

  • データ ソース構成ウィザードを実行し、データベースまたは Web サービスのデータ ソースの種類を選択します。

    Visual Studio のデータ ソース構成ウィザードでデータ ソースの種類を選択する方法を示すスクリーンショット。

TableAdapters の概要については、「 TableAdapters を使用したデータセットの取得」を参照してください。

[前提条件]

この記事の手順を完了するには、次の前提条件が満たされている必要があります。

この記事の手順は、Visual Studio で使用できる対話型開発エクスペリエンス (IDE) の最新バージョンについて説明しています。 お使いのコンピューターでは、一部のユーザー インターフェイス要素に異なる名前や場所が表示される場合があります。 また、Visual Studio のバージョンや環境設定がお使いのものと異なる可能性があります。 詳細については、「IDEのカスタマイズ」を参照してください。

TableAdapter 構成ウィザードにアクセスする

TableAdapter 構成ウィザードを使用して、新しい TableAdapter を作成したり、既存のインスタンスを編集したり、関連するデータ テーブルを構成したりできます。

  • ウィザードで既存の TableAdapter を構成するには、 データセット デザイナー で TableAdapter インスタンスを右クリックし、[ 構成] を選択します。

    Visual Studio でテーブル アダプター構成ウィザードにアクセスする方法を示すスクリーンショット。

  • ウィザードで新しい TableAdapter を作成するには、 TableAdapter オブジェクトを ツールボックス から データセット デザイナー 画面の空の領域にドラッグします。

ウィザードを使用する

TableAdapter 構成の場合、 TableAdapter 構成ウィザード では、次のタスクを実行できます。

  1. TableAdapter に必要な設定を構成します。

    • TableAdapter 接続のデータ ソースの種類を指定します。

    • データベース (SQL ステートメントまたはストアド プロシージャ) との通信に使用するコマンドを特定します。 TableAdapter が既にデータ ソースに関連付けられている場合、ウィザードにこのオプションは表示されません。

  2. 必要に応じてストアド プロシージャを作成します。

    データベースに対する適切なアクセス許可がある場合は、基になるデータベースに新しいストアド プロシージャを作成します。 必要なアクセス許可がない場合、このオプションはウィザードでは使用できません。

  3. 必要に応じて、既存のストアド プロシージャを実行します。

    プロシージャは、TableAdapter の SELECTINSERTUPDATEDELETE コマンドで使用できます。 たとえば、 UPDATE コマンドに割り当てられたストアド プロシージャは、 TableAdapter.Update() メソッドを呼び出すと実行されます。

  4. 選択したストアド プロシージャのパラメーターを、データ テーブル内の対応する列にマップします。 たとえば、ストアド プロシージャが@CompanyNameという名前のパラメーターを受け取り、それをデータ テーブル内のCompanyName列に渡す場合、@CompanyName パラメーターのソース列CompanyNameに設定します。

    SELECT コマンドでは、既定で TableAdapter Fill メソッドを呼び出すと、ストアド プロシージャが実行されます。 ウィザードの後続のページで Fill() メソッドの名前を指定 します。 既定のメソッドを使用する場合、 SELECT コマンドのストアド プロシージャを実行する一般的なコードは TableAdapter.Fill(<TableName>)<TableName>部分は、データ テーブルの名前に置き換えます。

    既定のメソッド名を Fill から変更する場合は、プロシージャのコードを更新する必要があります。 Fillを新しいメソッド名に置き換え、TableAdapter の実際の名前を使用します。 たとえば、 CustomersTableAdapter という名前の TableAdapter と CustomersTable という名前のデータ テーブルの場合、 Fill メソッド名を AddDataに変更した場合は、コードを CustomersTableAdapter.AddData(CustomersTable) に更新します。

    • [Create methods to send updates to the database]\(更新をデータベースに直接送信するメソッドの作成\) オプションを有効にするかどうかを選択します。 このオプションを有効にすると、 GenerateDBDirectMethods プロパティを true に設定するのと同じです。 元の SQL ステートメントで十分な情報が提供されない場合、またはクエリが更新可能なクエリでない場合は、このオプションを使用できません。 たとえば、 JOIN クエリやその他のクエリが 1 つの (スカラー) 値を返す場合です。
  5. [詳細オプション] の基本設定を構成します。

    • [SQL ステートメントの生成] ページで定義されている SELECT コマンドに基づいて、INSERTUPDATEおよび DELETE コマンドを生成します。

    • オプティミスティック同時実行制御を使用する。

    • INSERT コマンドと UPDATE コマンドを実行した後、データ テーブルを更新します。

TableAdapter.Fill() メソッドを構成する

一部のシナリオでは、TableAdapter のデータ テーブルのスキーマを変更できます。 アクションを完了するには、TableAdapter のプライマリ Fill メソッドを変更します。 TableAdapters は、関連付けられたデータ テーブルのスキーマを定義するプライマリ Fill メソッドを使用して作成されます。 プライマリ Fill メソッドは、最初に TableAdapter を構成したときに入力したクエリまたはストアド プロシージャに基づいています。 これは、 データセット デザイナーのデータ テーブルの最初の (最上位) メソッドです。

複数のクエリで TableAdapter を使用する方法を示す図。

TableAdapter のメイン Fill メソッドに加えた変更は、関連付けられているデータ テーブルのスキーマに反映されます。 たとえば、main Fill メソッドのクエリから列を削除すると、関連付けられているデータ テーブルからも列が削除されます。 さらに、main Fill メソッドから列を削除すると、その TableAdapter の追加クエリから列が削除されます。

TableAdapter クエリ構成ウィザードを使用して、TableAdapter の追加クエリを作成および編集できます。 これらの追加クエリは、スカラー値を返さない限り、テーブル スキーマに準拠している必要があります。 追加の各クエリには、指定した名前があります。

次の例は、 FillByCityという名前の追加クエリを呼び出す方法を示しています。

CustomersTableAdapter.FillByCity(NorthwindDataSet.Customers, "Seattle")

ウィザードを使用してクエリを作成する

次の手順に従って、 TableAdapter クエリ構成ウィザード で新しいクエリを作成できます。

  1. データセット デザイナーでデータセットを開きます。

  2. 次のいずれかのアクションを使用して新しいクエリを作成します。

    • データセット デザイナーで、TableAdapter を右クリックし、[クエリの追加] を選択します。
    • Query オブジェクトをツールボックスの [データセット] タブからデータセット デザイナー画面のDataTableにドラッグします。
    • Query オブジェクトをツールボックスからデータセット デザイナー画面の空の領域にドラッグします。これによって、関連付けられたDataTableを使用せずに TableAdapter が作成されます。

    これらのクエリは、単一 (スカラー) 値のみを返すか、データベースに対して UPDATEINSERT、または DELETE コマンドを実行できます。

  3. [ データ接続の選択 ] 画面で、既存の接続を選択するか、クエリの新しい接続を作成します。

    この画面は、デザイナーが使用する接続を決定できない場合、または使用可能な接続がない場合にのみ表示されます。

  4. [ コマンドの種類の選択 ] 画面で、データベースからデータをフェッチする次の方法から選択して、コマンドを構成します。

    • SQL ステートメントを使用する: SQL ステートメントを入力して、データベースからデータを選択します。

    • 新しいストアド プロシージャの作成: ウィザードは、指定された SELECT コマンドに基づいて新しいストアド プロシージャをデータベースに作成します。

    • 既存のストアド プロシージャを使用する: クエリを実行するときに、既存のストアド プロシージャを実行します。

ウィザードを使用してクエリを構成する

TableAdapter クエリ構成ウィザードを使用して既存の TableAdapter クエリを編集するには、クエリを右クリックし、[構成] を選択します。 右クリック アクションでは、選択したクエリの種類に応じて異なる結果が生成されます。

  • TableAdapter のメイン クエリでは、TableAdapter と DataTable スキーマの両方が再構成されます。

  • TableAdapter の追加クエリでは、選択したクエリのみが再構成されます。

TableAdapter 構成ウィザードでは TableAdapter 定義が再構成され、TableAdapter クエリ構成ウィザードでは選択したクエリのみが再構成されます。

TableAdapter にグローバル クエリを追加する

グローバル クエリは、単一の (スカラー) 値または値を返さない SQL クエリです。 通常、グローバル関数は、挿入、更新、削除などのデータベース操作を実行します。 また、テーブル内の顧客の数や、特定の注文のすべてのアイテムの合計料金などの情報も集計されます。

  1. ツールボックスの [データセット] タブからデータセット デザイナー画面の空の領域にQuery オブジェクトをドラッグして、グローバル クエリを追加します。

  2. SELECT COUNT(*) AS CustomerCount FROM Customersなど、特定のタスクを実行するクエリを入力します。

    Query オブジェクトをデータセット デザイナー画面に直接ドラッグすると、スカラー (単一) 値のみを返すメソッドが作成されます。 選択したクエリまたはストアド プロシージャは 1 つ以上の値を返しますが、ウィザードによって作成されたメソッドは 1 つの値のみを返します。 たとえば、クエリは、返されたデータの最初の行の最初の列を返す場合があります。