SqlCommand.ExecuteReader メソッド

定義

CommandTextConnection に送信し、SqlDataReader を構築します。Sends the CommandText to the Connection and builds a SqlDataReader.

オーバーロード

ExecuteReader()

CommandTextConnection に送信し、SqlDataReader を構築します。Sends the CommandText to the Connection and builds a SqlDataReader.

ExecuteReader(CommandBehavior)

CommandTextConnection に送信し、SqlDataReader 値のいずれかを使用して CommandBehavior を構築します。Sends the CommandText to the Connection, and builds a SqlDataReader using one of the CommandBehavior values.

ExecuteReader()

CommandTextConnection に送信し、SqlDataReader を構築します。Sends the CommandText to the Connection and builds a SqlDataReader.

public:
 System::Data::SqlClient::SqlDataReader ^ ExecuteReader();
public System.Data.SqlClient.SqlDataReader ExecuteReader ();
member this.ExecuteReader : unit -> System.Data.SqlClient.SqlDataReader
Public Function ExecuteReader () As SqlDataReader

戻り値

SqlDataReader オブジェクト。A SqlDataReader object.

例外

SqlDbTypeに設定されたときに、 BinaryでもVarBinaryValue でもない Stream が使用されました。A SqlDbType other than Binary or VarBinary was used when Value was set to Stream. ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。For more information about streaming, see SqlClient Streaming Support.

または-or-

SqlDbTypeに設定されたときに、 Char NChar NVarChar VarChar XmlValue のいずれでもない TextReader が使用されました。A SqlDbType other than Char, NChar, NVarChar, VarChar, or Xml was used when Value was set to TextReader.

または-or-

SqlDbTypeに設定されたときに、 XmlValue 以外の XmlReader が使用されました。A SqlDbType other than Xml was used when Value was set to XmlReader.

ロックされた行に対するコマンドの実行中に、例外が発生しました。An exception occurred while executing the command against a locked row. Microsoft .NET Framework バージョン 1.0 を使用している場合は、この例外は生成されません。This exception is not generated when you are using Microsoft .NET Framework version 1.0.

または-or-

ストリーミング操作中にタイムアウトが発生しました。A timeout occurred during a streaming operation. ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。For more information about streaming, see SqlClient Streaming Support.

現在の接続の状態は "終了" です。The current state of the connection is closed. ExecuteReader() には開いている SqlConnection が必要です。ExecuteReader() requires an open SqlConnection.

または-or-

ストリーミング操作中に、SqlConnection が閉じられたか切断されました。The SqlConnection closed or dropped during a streaming operation. ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。For more information about streaming, see SqlClient Streaming Support.

ストリーミング操作中に、StreamXmlReader、または TextReader オブジェクトでエラーが発生しました。An error occurred in a Stream, XmlReader or TextReader object during a streaming operation. ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。For more information about streaming, see SqlClient Streaming Support.

ストリーミング操作中に、StreamXmlReader、または TextReader オブジェクトが閉じられました。The Stream, XmlReader or TextReader object was closed during a streaming operation. ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。For more information about streaming, see SqlClient Streaming Support.

次の例では、SqlCommandを作成し、Transact-sql SELECT ステートメントである文字列と、データソースへの接続に使用する文字列を渡して実行します。The following example creates a SqlCommand, and then executes it by passing a string that is a Transact-SQL SELECT statement, and a string to use to connect to the data source.

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]));
        }
    }
}
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()
        While reader.Read()
            Console.WriteLine("{0}", reader(0))
        End While
    End Using
End Sub

注釈

CommandType プロパティが StoredProcedureに設定されている場合は、CommandText プロパティをストアドプロシージャの名前に設定する必要があります。When the CommandType property is set to StoredProcedure, the CommandText property should be set to the name of the stored procedure. ExecuteReaderを呼び出すと、このストアドプロシージャが実行されます。The command executes this stored procedure when you call ExecuteReader.

注意

トランザクションがデッドロックされている場合、Read が呼び出されるまで例外がスローされない可能性があります。If a transaction is deadlocked, an exception may not be thrown until Read is called.

複数のアクティブな結果セット (MARS) 機能により、同じ接続を使用して複数のアクションを実行できます。The multiple active result set (MARS) feature allows for multiple actions using the same connection.

ExecuteReader または BeginExecuteReader を使用して XML データにアクセスする場合、SQL Server は、2033文字を超える XML 結果をそれぞれ2033文字の複数の行に返します。If you use ExecuteReader or BeginExecuteReader to access XML data, SQL Server will return any XML results greater than 2,033 characters in length in multiple rows of 2,033 characters each. この動作を回避するには、ExecuteXmlReader または BeginExecuteXmlReader を使用して FOR XML クエリを読み取ります。To avoid this behavior, use ExecuteXmlReader or BeginExecuteXmlReader to read FOR XML queries.

こちらもご覧ください

ExecuteReader(CommandBehavior)

CommandTextConnection に送信し、SqlDataReader 値のいずれかを使用して CommandBehavior を構築します。Sends the CommandText to the Connection, and builds a SqlDataReader using one of the CommandBehavior values.

public:
 System::Data::SqlClient::SqlDataReader ^ ExecuteReader(System::Data::CommandBehavior behavior);
public System.Data.SqlClient.SqlDataReader ExecuteReader (System.Data.CommandBehavior behavior);
member this.ExecuteReader : System.Data.CommandBehavior -> System.Data.SqlClient.SqlDataReader
Public Function ExecuteReader (behavior As CommandBehavior) As SqlDataReader

パラメーター

behavior
CommandBehavior

CommandBehavior 値の 1 つ。One of the CommandBehavior values.

戻り値

SqlDataReader オブジェクト。A SqlDataReader object.

例外

SqlDbTypeに設定されたときに、 BinaryでもVarBinaryValue でもない Stream が使用されました。A SqlDbType other than Binary or VarBinary was used when Value was set to Stream. ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。For more information about streaming, see SqlClient Streaming Support.

または-or-

SqlDbTypeに設定されたときに、 Char NChar NVarChar VarChar XmlValue のいずれでもない TextReader が使用されました。A SqlDbType other than Char, NChar, NVarChar, VarChar, or Xml was used when Value was set to TextReader.

または-or-

SqlDbTypeに設定されたときに、 XmlValue 以外の XmlReader が使用されました。A SqlDbType other than Xml was used when Value was set to XmlReader.

ストリーミング操作中にタイムアウトが発生しました。A timeout occurred during a streaming operation. ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。For more information about streaming, see SqlClient Streaming Support.

ストリーミング操作中に、StreamXmlReader、または TextReader オブジェクトでエラーが発生しました。An error occurred in a Stream, XmlReader or TextReader object during a streaming operation. ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。For more information about streaming, see SqlClient Streaming Support.

ストリーミング操作中に、SqlConnection が閉じられたか切断されました。The SqlConnection closed or dropped during a streaming operation. ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。For more information about streaming, see SqlClient Streaming Support.

ストリーミング操作中に、StreamXmlReader、または TextReader オブジェクトが閉じられました。The Stream, XmlReader or TextReader object was closed during a streaming operation. ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。For more information about streaming, see SqlClient Streaming Support.

次の例では、SqlCommandを作成し、Transact-sql SELECT ステートメントである文字列と、データソースへの接続に使用する文字列を渡して実行します。The following example creates a SqlCommand, and then executes it by passing a string that is a Transact-SQL SELECT statement, and a string to use to connect to the data source. CommandBehaviorCloseConnection に設定されます。CommandBehavior is set to CloseConnection.

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]));
        }
    }
}
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)
        While reader.Read()
            Console.WriteLine("{0}", reader(0))
        End While
    End Using
End Sub

注釈

CommandType プロパティが StoredProcedureに設定されている場合は、CommandText プロパティをストアドプロシージャの名前に設定する必要があります。When the CommandType property is set to StoredProcedure, the CommandText property should be set to the name of the stored procedure. ExecuteReaderを呼び出すと、このストアドプロシージャが実行されます。The command executes this stored procedure when you call ExecuteReader.

注意

SequentialAccess を使用して、大きな値とバイナリデータを取得します。Use SequentialAccess to retrieve large values and binary data. それ以外の場合、OutOfMemoryException が発生し、接続が閉じられる可能性があります。Otherwise, an OutOfMemoryException might occur and the connection will be closed.

複数のアクティブな結果セット (MARS) 機能により、同じ接続を使用して複数のアクションを実行できます。The multiple active result set (MARS) feature allows for multiple actions using the same connection.

ExecuteReader または BeginExecuteReader を使用して XML データにアクセスする場合、SQL Server は、2033文字を超える XML 結果をそれぞれ2033文字の複数の行に返します。If you use ExecuteReader or BeginExecuteReader to access XML data, SQL Server will return any XML results greater than 2,033 characters in length in multiple rows of 2,033 characters each. この動作を回避するには、ExecuteXmlReader または BeginExecuteXmlReader を使用して FOR XML クエリを読み取ります。To avoid this behavior, use ExecuteXmlReader or BeginExecuteXmlReader to read FOR XML queries.

こちらもご覧ください

適用対象