次の方法で共有


.NET Framework アプリケーションでパラメーター化された TableAdapter クエリを作成する

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

パラメーター化されたクエリは、クエリ内の WHERE 句の条件を満たすデータを返します。 たとえば、顧客リストをパラメーター化して特定の都市の顧客のみを表示するには、顧客の一覧を返す SQL ステートメントの末尾に WHERE City = @City を追加します。

パラメーター化された TableAdapter クエリは、データセット デザイナーで作成します。[データ] メニューの [データ ソースのパラメーター化] コマンドを使用して、Windows アプリケーションで作成することもできます。 [データ ソースのパラメーター化] コマンドは、パラメーター値を入力してクエリを実行できるコントロールをフォームに作成します。

パラメーター化されたクエリを作成するときは、コーディング対象のデータベースに固有のパラメーター表記を使用します。 たとえば、Access データ ソースと OleDb データ ソースでは、パラメーターを示すために疑問符 '?' が使用されるため、 WHERE 句は次のようになります: WHERE City = ?

パラメーター化された TableAdapter クエリを作成する

データセット デザイナーでパラメーター化クエリを作成するには

  • 新しい TableAdapter を作成し、必要なパラメーターを持つ WHERE 句を SQL ステートメントに追加します。 詳細については、「 TableAdapters の作成と構成」を参照してください。

    または

  • 既存の TableAdapter にクエリを追加し、必要なパラメーターを持つ WHERE 句を SQL ステートメントに追加します。

データ バインド フォームの設計時にパラメーター化されたクエリを作成するには

  1. データセットに既にバインドされているフォーム上のコントロールを選択します。 詳細については、「 Windows フォーム コントロールを Visual Studio のデータにバインドする」を参照してください。

  2. [ データ ] メニューの [ クエリの追加] を選択します。

  3. [ 検索条件ビルダー ] ダイアログ ボックスに入力し、必要なパラメーターを含む WHERE 句を SQL ステートメントに追加します。

既存のデータ バインド フォームにクエリを追加するには

  1. Windows フォーム デザイナーでフォームを開きます。

  2. [ データ ] メニューの [ クエリの追加 ] または [ データ スマート タグ] を選択します。

    [データ] メニューで [クエリの追加] が使用できない場合は、パラメーター化を追加するデータ ソースを表示するフォーム上のコントロールを選択します。 たとえば、フォームが DataGridView コントロールにデータを表示する場合は、それを選択します。 フォームに個々のコントロールにデータが表示される場合は、データ バインド コントロールを選択します。

  3. [ データ ソース テーブルの選択 ] 領域で、パラメーター化を追加するテーブルを選択します。

  4. 新しいクエリを作成する場合は 、[新しいクエリ名 ] ボックスに名前を入力します。

    または

    [既存のクエリ名] ボックスで クエリ を選択します。

  5. [ クエリ テキスト ] ボックスに、パラメーターを受け取るクエリを入力します。

  6. [OK] を選択.

    パラメーターを入力するコントロールと [読み込み] ボタンが、 ToolStrip コントロールのフォームに追加されます。

Null 値のクエリ

TableAdapter パラメーターには、現在の値を持たないレコードに対してクエリを実行する場合に null 値を割り当てることができます。 たとえば、WHERE句に ShippedDate パラメーターがある次のクエリを考えてみます。

SELECT CustomerID, OrderDate, ShippedDate
FROM Orders
WHERE (ShippedDate = @ShippedDate) OR (ShippedDate IS NULL)

これが TableAdapter に対するクエリの場合、次のコードを使用して出荷されていないすべての注文をクエリできます。

ordersTableAdapter.FillByShippedDate(northwindDataSet.Orders, null);

クエリが null 値を受け入れるようにするには:

  1. データセット デザイナーで、null パラメーター値を受け入れる必要がある TableAdapter クエリを選択します。

  2. [ プロパティ ] ウィンドウで [ パラメーター] を選択し、省略記号 (...) ボタンを選択して パラメーター コレクション エディターを開きます。

  3. null 値を許可するパラメーターを選択し、 AllowDbNull プロパティを trueに設定します。