SqlCommand.ExecuteReader メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
| 名前 | 説明 |
|---|---|
| ExecuteReader() |
CommandTextをConnectionに送信し、SqlDataReaderをビルドします。 |
| ExecuteReader(CommandBehavior) |
CommandTextをConnectionに送信し、SqlDataReader値のいずれかを使用してCommandBehaviorを構築します。 |
ExecuteReader()
- ソース:
- SqlCommand.cs
- ソース:
- SqlCommand.cs
- ソース:
- SqlCommand.cs
- ソース:
- SqlCommand.cs
CommandTextをConnectionに送信し、SqlDataReaderをビルドします。
public:
Microsoft::Data::SqlClient::SqlDataReader ^ ExecuteReader();
public Microsoft.Data.SqlClient.SqlDataReader ExecuteReader();
override this.ExecuteReader : unit -> Microsoft.Data.SqlClient.SqlDataReader
Public Function ExecuteReader () As SqlDataReader
返品
SqlDataReader オブジェクト。
例外
-
ValueがStreamに設定されたときに、
BinaryまたはVarBinary以外のSqlDbTypeが使用されました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。 -
Char、NChar、NVarChar、VarChar、またはXml以外のSqlDbTypeは、ValueがTextReaderに設定されたときに使用されました。 -
ValueがXmlReaderに設定されたときに、
Xml以外のSqlDbTypeが使用されました。
- ロックされた行に対するコマンドの実行中に例外が発生しました。 Microsoft .NET Framework バージョン 1.0 を使用している場合、この例外は生成されません。
- ストリーミング操作中にタイムアウトが発生しました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。
- 接続の現在の状態が閉じています。 ExecuteReader() 開いている SqlConnectionが必要です。
- SqlConnectionストリーミング操作中に閉じたり削除されたりします。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。
ストリーミング操作中に、 Stream、 XmlReader 、または TextReader オブジェクトでエラーが発生しました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。
ストリーミング操作中に、 Stream、 XmlReader 、または TextReader オブジェクトが閉じられました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。
例
次の例では、 SqlCommandを作成し、Transact-SQL SELECT ステートメントである文字列と、データ ソースへの接続に使用する文字列を渡して実行します。
using System;
using System.Data;
using Microsoft.Data.SqlClient;
class Program
{
static void Main()
{
string str = "Data Source=(local);Initial Catalog=Northwind;"
+ "Integrated Security=SSPI";
string qs = "SELECT OrderID, CustomerID FROM dbo.Orders;";
CreateCommand(qs, str);
}
private static void CreateCommand(string queryString,
string connectionString)
{
using (SqlConnection connection = new SqlConnection(
connectionString))
{
connection.Open();
SqlCommand command = new SqlCommand(queryString, connection);
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(String.Format("{0}", reader[0]));
}
}
}
注釈
CommandType プロパティが StoredProcedure に設定されている場合、CommandText プロパティはストアド プロシージャの名前に設定する必要があります。 このコマンドは、 ExecuteReaderを呼び出すときにこのストアド プロシージャを実行します。
Note
トランザクションがデッドロック状態の場合、 Read が呼び出されるまで例外がスローされない可能性があります。
複数のアクティブな結果セット (MARS) 機能を使用すると、同じ接続を使用して複数のアクションを実行できます。
ExecuteReaderまたはBeginExecuteReaderを使用して XML データにアクセスする場合、SQL Server は長さが 2,033 文字を超える XML 結果を、それぞれ 2,033 文字の複数行で返します。 この動作を回避するには、 ExecuteXmlReader または BeginExecuteXmlReader を使用して FOR XML クエリを読み取ります。
適用対象
ExecuteReader(CommandBehavior)
- ソース:
- SqlCommand.cs
- ソース:
- SqlCommand.cs
- ソース:
- SqlCommand.cs
- ソース:
- SqlCommand.cs
CommandTextをConnectionに送信し、SqlDataReader値のいずれかを使用してCommandBehaviorを構築します。
public:
Microsoft::Data::SqlClient::SqlDataReader ^ ExecuteReader(System::Data::CommandBehavior behavior);
public Microsoft.Data.SqlClient.SqlDataReader ExecuteReader(System.Data.CommandBehavior behavior);
override this.ExecuteReader : System.Data.CommandBehavior -> Microsoft.Data.SqlClient.SqlDataReader
Public Function ExecuteReader (behavior As CommandBehavior) As SqlDataReader
パラメーター
- behavior
- CommandBehavior
CommandBehavior値の 1 つ。
返品
SqlDataReader オブジェクト。
例外
ストリーミング操作中にタイムアウトが発生しました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。
ストリーミング操作中に、 Stream、 XmlReader 、または TextReader オブジェクトでエラーが発生しました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。
SqlConnectionストリーミング操作中に閉じたり削除されたりします。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。
ストリーミング操作中に、 Stream、 XmlReader 、または TextReader オブジェクトが閉じられました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。
例
次の例では、 SqlCommandを作成し、Transact-SQL SELECT ステートメントである文字列と、データ ソースへの接続に使用する文字列を渡して実行します。 CommandBehavior は CloseConnection に設定されます。
using System;
using System.Data;
using Microsoft.Data.SqlClient;
class Program
{
static void Main()
{
string str = "Data Source=(local);Initial Catalog=Northwind;"
+ "Integrated Security=SSPI";
string qs = "SELECT OrderID, CustomerID FROM dbo.Orders;";
CreateCommand(qs, str);
}
private static void CreateCommand(string queryString,
string connectionString)
{
using (SqlConnection connection = new SqlConnection(
connectionString))
{
SqlCommand command = new SqlCommand(queryString, connection);
connection.Open();
SqlDataReader reader =
command.ExecuteReader(CommandBehavior.CloseConnection);
while (reader.Read())
{
Console.WriteLine(String.Format("{0}", reader[0]));
}
}
}
}
注釈
CommandType プロパティが StoredProcedure に設定されている場合、CommandText プロパティはストアド プロシージャの名前に設定する必要があります。 このコマンドは、 ExecuteReaderを呼び出すときにこのストアド プロシージャを実行します。
Note
SequentialAccessを使用して、大きな値とバイナリ データを取得します。 そうしないと、 OutOfMemoryException が発生し、接続が閉じられます。
複数のアクティブな結果セット (MARS) 機能を使用すると、同じ接続を使用して複数のアクションを実行できます。
ExecuteReaderまたはBeginExecuteReaderを使用して XML データにアクセスする場合、SQL Server は長さが 2,033 文字を超える XML 結果を、それぞれ 2,033 文字の複数行で返します。 この動作を回避するには、 ExecuteXmlReader または BeginExecuteXmlReader を使用して FOR XML クエリを読み取ります。