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