次の方法で共有


データセットへの読み込みとデータのクエリの概要

更新 : 2007 年 11 月

Transact-SQL クエリの実行とデータセットの読み込みに使用する標準の Visual Studio 機構は、TableAdapter です。

TableAdapter またはコマンド オブジェクト (SqlCommand など) を使用すると、データ ソースに対して SQL ステートメントまたはストアド プロシージャを実行できます。Visual Studio のデザイン ツールを使用して作成したデータセットにデータを読み込むには、TableAdapter を使用します。プログラムで作成したデータセットにデータを読み込むには、データ アダプタを使用します。アプリケーションでデータセットを使用しない場合は、コマンド オブジェクトを使用して、データベースに対して SQL ステートメントまたはストアド プロシージャを直接実行します。

内容

参照項目

TableAdapter を使用したデータセットへのデータの読み込み

方法 : データセットにデータを読み込む

TableAdapter

TableAdapter の概要

データ アダプタを使用したデータセットへのデータの読み込み

DataAdapter からの DataSet の読み込み (ADO.NET)

データセットへのデータの読み込み

Visual Studio デザイン時ツール (データセット デザイナデータ ソース構成ウィザードなど) を使ってデータセットを作成した場合、TableAdapter を使ってデータセットにデータを読み込みます。TableAdapter は、SQL ステートメントまたはストアド プロシージャを実行します。

デザイン時ツールを使わずにデータセットを作成した場合は、データの読み込みや更新にデータ アダプタを使用する必要があります。TableAdapter は、.NET Framework 3.5 の実際のクラスではないため、デザイン時ツールを使わずに作成したデータセットを操作する手段としては不適切です。TableAdapter またはデータ アダプタを使用したデータセットへのデータの読み込みの詳細については、「方法 : データセットにデータを読み込む」を参照してください。

TableAdapter クエリ

TableAdapter クエリを実行してデータセットにデータを読み込むことができます (より具体的には、データセットを構成する DataTable にデータを読み込みます)。TableAdapter クエリを作成するには、データセット デザイナの TableAdapter クエリの構成ウィザードを使用します。TableAdapter クエリは指定されたメソッドとして TableAdapter に表示され、TableAdapter のメソッドを呼び出して実行します。TableAdapter クエリの作成と実行の詳細については、次のトピックを参照してください。

コマンド オブジェクト

コマンド オブジェクトを使用すると、DataSet、TableAdapter、または DataAdapter を使用しなくても、データベースに対して SQL ステートメントとストアド プロシージャを直接実行できます(コマンド オブジェクトという用語は、アプリケーションで使用している .NET Framework データ プロバイダに固有のコマンドを表します。たとえば、アプリケーションで .NET Framework SQL Server 用データ プロバイダを使用している場合、コマンド オブジェクトは SqlCommand です)。

データ コマンドの CommandType プロパティを CommandType 列挙体のいずれかの値に設定することにより、SQL ステートメントまたはストアド プロシージャを使用してデータへのクエリを実行するコマンドを構成します。SQL ステートメントを実行するには CommandType を Text に設定し、ストアド プロシージャを実行する場合は StoredProcedure に設定します。次に、CommandText プロパティに SQL ステートメントを設定するか、またはストアド プロシージャの名前を設定します。続いて、実行メソッド (ExecuteReader、ExecuteScalar、ExecuteNonQuery) の 1 つを呼び出してデータ コマンドを実行できます。

それぞれの .NET Framework データ プロバイダ (ADO.NET) に、特定のデータベース用に最適化されたコマンド オブジェクトが用意されています。

データ コマンドを使用することにより、アプリケーションで次の操作ができます。

  • 結果をデータセットに読み込まずに、結果を直接読み込むことのできる選択コマンドを実行できます。結果を読み込むには、データ リーダー (OleDbDataReaderSqlDataReaderOdbcDataReader、または OracleDataReader の各オブジェクト) を使用します。このリーダーは、コントロールをバインドできる読み取り専用の前方向カーソルのように機能します。この方法を使用すると、メモリの使用量を軽減し、読み取り専用データを迅速に読み込むことができます。

  • データ定義言語 (DDL: Database Definition Language) コマンドを実行して、テーブルやストアド プロシージャなどのデータベース ストラクチャを作成、編集、および削除できます。これらの操作を行うには、適切なアクセス許可が必要です。

  • データベース カタログ情報を取得するコマンドを実行できます。

  • データセット テーブルを更新して変更をデータベースにコピーする代わりに、動的な SQL コマンドを実行してレコードを更新、挿入、または削除できます。

  • 集約関数 (SUM、COUNT、AVG など) の結果のようなスカラ値 (つまり、単一の値) を返すコマンドを実行できます。

  • SQL Server データベース (バージョン 7.0 以降) のデータを XML 形式で返すコマンドを実行できます。一般的な使用法としては、クエリを実行してデータを XML 形式で取得し、XSLT 変換を適用してデータを HTML に変換してから、結果をブラウザに送信します。

コマンドのプロパティには、データベースに対してコマンドを実行するために必要なすべての情報が含まれています。具体的には、次の情報が含まれています。

  • **接続   **コマンドは、データベースとやり取りするために使用する接続を参照します。

  • コマンドの名前またはテキスト   コマンドには、SQL ステートメントの実際のテキスト、または実行するストアド プロシージャの名前が含まれています。

  • **パラメータ   **コマンドによっては、パラメータに値を渡す必要があります (入力パラメータ)。また、コマンドは、戻り値または出力パラメータ値の形で値を返す場合があります。各コマンドにはパラメータのコレクションがあり、個別に設定して値を渡したり、読み取って値を取得したりできます。詳細については、「方法 : コマンド オブジェクトのパラメータを設定および取得する」を参照してください。

取得する結果に適したメソッドを使用してコマンドを実行する必要があります。たとえば、行を取得する場合は、コマンドの ExecuteReader メソッドを呼び出して、データ リーダーにレコードが返されるようにします。UPDATE、INSERT、または DELETE の各コマンドを実行する場合は、コマンドの ExecuteNonQuery メソッドを呼び出して、対象となった行数を示す値が返るようにします。顧客の注文の件数を返すような集約関数を実行する場合は、ExecuteScalar メソッドを呼び出します。

複数結果セット

通常、コマンド オブジェクトは、データの単一のテーブル (行セット) を返すために使用されます。しかし、コマンドは、複数の結果セットを返すプロシージャも実行できます。これはいくつかの異なる方法で行われます。1 つは、コマンドが、複数の結果セットを返すストアド プロシージャを参照する場合です。または、コマンドが 2 つ以上のステートメントやストアド プロシージャ名を含む場合もあります。その場合は、1 つの呼び出しでステートメントまたはプロシージャが順番に実行され、複数の結果セットが返されます。

コマンドに対して複数のステートメントまたはプロシージャを指定する場合、すべて同じ種類である必要があります。たとえば、連続した SQL ステートメントや連続したストアド プロシージャは実行できますが、ストアド プロシージャ呼び出しと SQL ステートメントを同じコマンドで実行することはできません。詳細については、「DataReader によるデータの取得 (ADO.NET)」を参照してください。

ms171919.alert_note(ja-jp,VS.90).gifメモ :

Oracle の場合、.NET Framework Oracle 用データ プロバイダはバッチにまとめられた SQL ステートメントをサポートしていません。ただし、複数の REF CURSOR 出力パラメータをそれぞれ別個のデータ テーブルで使用してデータセットにデータを格納できます。パラメータを定義して出力パラメータとしてマークし、REF CURSOR データ型であることを示す必要があります。OracleDataAdapter オブジェクトのデータが REF CURSOR パラメータからストアド プロシージャに格納される場合は、Update メソッドを使用できません。これは、SQL ステートメントが実行されるときに、テーブル名と列名を決定するために必要な情報が Oracle から提供されないためです。

セキュリティ

CommandType プロパティを Text に設定したデータ コマンドを使用するときは、クライアントから送信された情報をデータベースに渡す前に、その情報を十分にチェックしてください。悪意のあるユーザーが、承認なしでデータベースにアクセスしたり、データベースを破壊したりする目的で、変更した SQL ステートメントや追加の SQL ステートメントの送信 (挿入) を試みる場合があります。ユーザーの入力をデータベースに転送する前に、その情報が有効であることを常に検証する必要があります。できる限り、常にパラメータ化されたクエリまたはストアド プロシージャを使用することをお勧めします。

参照

その他の技術情報

データ アクセスを使用した作業の開始

Visual Studio でのデータへの接続

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

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

Windows アプリケーションのフォームでのデータの表示

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

データの検証

データの保存

データ リソース