次の方法で共有


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

Note

データセットと関連クラスは、アプリケーションがデータベースから切断されている間にアプリケーションがメモリ内のデータを操作できるようにする、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 ステートメントに追加します。 詳細については、「TableAdapter の作成および構成」を参照してください。

    または

  • 既存の TableAdapter にクエリを追加し、目的のパラメーターを含む WHERE 句を SQL ステートメントに追加します。

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

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

  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 に設定します。