英語で読む

次の方法で共有


SqlCommand.ExecuteReader メソッド

定義

CommandTextConnection に送信し、SqlDataReader を構築します。

オーバーロード

ExecuteReader()

CommandTextConnection に送信し、SqlDataReader を構築します。

ExecuteReader(CommandBehavior)

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

ExecuteReader()

ソース:
System.Data.SqlClient.notsupported.cs

CommandTextConnection に送信し、SqlDataReader を構築します。

C#
public System.Data.SqlClient.SqlDataReader ExecuteReader();

戻り値

SqlDataReader オブジェクト。

例外

ValueStream に設定されたときに、Binary でも VarBinary でもない SqlDbType が使用されました。 ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。

- または -

SqlDbTypeが にTextReader設定されている場合ValueCharNCharNVarCharVarCharまたは Xml 以外の が使用されました。

- または -

ValueXmlReader に設定されたときに、Xml 以外の SqlDbType が使用されました。

ロックされた行に対するコマンドの実行中に、例外が発生しました。 Microsoft .NET Framework バージョン 1.0 を使用している場合は、この例外は生成されません。

- または -

ストリーミング操作中にタイムアウトが発生しました。 ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。

現在の接続の状態は "終了" です。 ExecuteReader() には開いている SqlConnection が必要です。

- または -

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

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

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

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

C#
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]));
            }
        }
    }
}

注釈

CommandType プロパティが StoredProcedure に設定されている場合は、CommandText プロパティをストアド プロシージャの名前に設定します。 ExecuteReader を呼び出すときに、コマンドによってこのストアド プロシージャが実行されます。

注意

トランザクションがデッドロックされている場合は、 が呼び出されるまで Read 例外がスローされない可能性があります。

複数のアクティブな結果セット (MARS) 機能を使用すると、同じ接続を使用して複数のアクションを実行できます。

または BeginExecuteReader を使用ExecuteReaderして XML データにアクセスする場合、SQL Serverは、それぞれ 2,033 文字の複数行で 2,033 文字を超える XML 結果を返します。 この動作を回避するには、 または BeginExecuteXmlReader を使用ExecuteXmlReaderして FOR XML クエリを読み取ります。

こちらもご覧ください

適用対象

.NET 10 (package-provided) およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, 6 (package-provided), 7 (package-provided), 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)

ExecuteReader(CommandBehavior)

ソース:
System.Data.SqlClient.notsupported.cs

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

C#
public System.Data.SqlClient.SqlDataReader ExecuteReader(System.Data.CommandBehavior behavior);

パラメーター

behavior
CommandBehavior

CommandBehavior 値のいずれか 1 つ。

戻り値

SqlDataReader オブジェクト。

例外

ValueStream に設定されたときに、Binary でも VarBinary でもない SqlDbType が使用されました。 ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。

- または -

SqlDbTypeが にTextReader設定されている場合ValueCharNCharNVarCharVarCharまたは Xml 以外の が使用されました。

- または -

ValueXmlReader に設定されたときに、Xml 以外の SqlDbType が使用されました。

ストリーミング操作中にタイムアウトが発生しました。 ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。

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

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

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

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

C#
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]));
            }
        }
    }
}

注釈

CommandType プロパティが StoredProcedure に設定されている場合は、CommandText プロパティをストアド プロシージャの名前に設定します。 ExecuteReader を呼び出すときに、コマンドによってこのストアド プロシージャが実行されます。

注意

大きな値とバイナリ データを取得するには、 を使用 SequentialAccess します。 それ以外の場合は、 OutOfMemoryException が発生し、接続が閉じられます。

複数のアクティブな結果セット (MARS) 機能を使用すると、同じ接続を使用して複数のアクションを実行できます。

または BeginExecuteReader を使用ExecuteReaderして XML データにアクセスする場合、SQL Serverは、それぞれ 2,033 文字の複数行で 2,033 文字を超える XML 結果を返します。 この動作を回避するには、 または BeginExecuteXmlReader を使用ExecuteXmlReaderして FOR XML クエリを読み取ります。

こちらもご覧ください

適用対象

.NET 10 (package-provided) およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, 6 (package-provided), 7 (package-provided), 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)