SqlCommand.ExecuteReader メソッド

定義

オーバーロード

名前 説明
ExecuteReader()

CommandTextConnectionに送信し、SqlDataReaderをビルドします。

ExecuteReader(CommandBehavior)

CommandTextConnectionに送信し、SqlDataReader値のいずれかを使用してCommandBehaviorを構築します。

ExecuteReader()

ソース:
SqlCommand.cs
ソース:
SqlCommand.cs
ソース:
SqlCommand.cs
ソース:
SqlCommand.cs

CommandTextConnectionに送信し、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 オブジェクト。

例外

  • ロックされた行に対するコマンドの実行中に例外が発生しました。 Microsoft .NET Framework バージョン 1.0 を使用している場合、この例外は生成されません。
  • ストリーミング操作中にタイムアウトが発生しました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。

ストリーミング操作中に、 StreamXmlReader 、または TextReader オブジェクトでエラーが発生しました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。

ストリーミング操作中に、 StreamXmlReader 、または 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

CommandTextConnectionに送信し、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 ストリーミング のサポート」を参照してください。

ストリーミング操作中に、 StreamXmlReader 、または TextReader オブジェクトでエラーが発生しました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。

SqlConnectionストリーミング操作中に閉じたり削除されたりします。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。

ストリーミング操作中に、 StreamXmlReader 、または TextReader オブジェクトが閉じられました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。

次の例では、 SqlCommandを作成し、Transact-SQL SELECT ステートメントである文字列と、データ ソースへの接続に使用する文字列を渡して実行します。 CommandBehaviorCloseConnection に設定されます。

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 クエリを読み取ります。

適用対象