SqlCommand.ExecuteReader 方法

定义

CommandText 发送到 Connection,并生成 SqlDataReader

重载

ExecuteReader()

CommandText 发送到 Connection,并生成 SqlDataReader

ExecuteReader(CommandBehavior)

CommandText 发送到 Connection,并使用 CommandBehavior 值之一生成 SqlDataReader

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 对象。

例外

Value 设置为 Stream 时,使用的是 SqlDbType 而不是 Binary 或 VarBinary。 有关流式处理的详细信息,请参阅 SqlClient 流支持

- 或 -

设置为 SqlDbTypeValueTextReader,使用了 CharNCharNVarCharVarCharXml 以外的 。

- 或 -

Value 设置为 XmlReader 时,使用的是 SqlDbType 而不是 Xml

对锁定的行执行命令时出现异常。 当使用 Microsoft .NET Framework 1.0 版时不生成此异常。

- 或 -

流式处理操作期间发生了超时。 有关流式处理的详细信息,请参阅 SqlClient 流支持

连接的当前状态已关闭。 ExecuteReader() 需要打开 SqlConnection

- 或 -

流式处理操作期间关闭或删除了 SqlConnection。 有关流式处理的详细信息,请参阅 SqlClient 流支持

流式处理操作期间在 StreamXmlReaderTextReader 对象中出现了错误。 有关流式处理的详细信息,请参阅 SqlClient 流支持

流式处理操作期间关闭了 StreamXmlReaderTextReader 对象。 有关流式处理的详细信息,请参阅 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时, 命令将执行此存储过程。

注意

如果事务已死锁,则在调用 之前 Read 可能不会引发异常。

MARS) 功能的多个活动结果集 (允许使用同一连接执行多个操作。

如果使用 ExecuteReaderBeginExecuteReader 访问 XML 数据,SQL Server将返回长度超过 2,033 个字符的任何 XML 结果,每行包含 2,033 个字符。 若要避免此行为,请使用 ExecuteXmlReaderBeginExecuteXmlReader 读取 FOR XML 查询。

另请参阅

适用于

ExecuteReader(CommandBehavior)

CommandText 发送到 Connection,并使用 CommandBehavior 值之一生成 SqlDataReader

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 值之一。

返回

SqlDataReader 对象。

例外

Value 设置为 Stream 时,使用的是 SqlDbType 而不是 Binary 或 VarBinary。 有关流式处理的详细信息,请参阅 SqlClient 流支持

- 或 -

设置为 SqlDbTypeValueTextReader,使用了 CharNCharNVarCharVarCharXml 以外的 。

- 或 -

Value 设置为 XmlReader 时,使用的是 SqlDbType 而不是 Xml

流式处理操作期间发生了超时。 有关流式处理的详细信息,请参阅 SqlClient 流支持

流式处理操作期间在 StreamXmlReaderTextReader 对象中出现了错误。 有关流式处理的详细信息,请参阅 SqlClient 流支持

流式处理操作期间关闭或删除了 SqlConnection。 有关流式处理的详细信息,请参阅 SqlClient 流支持

流式处理操作期间关闭了 StreamXmlReaderTextReader 对象。 有关流式处理的详细信息,请参阅 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时, 命令将执行此存储过程。

注意

使用 SequentialAccess 检索大型值和二进制数据。 否则, OutOfMemoryException 可能会出现 ,连接将关闭。

MARS) 功能的多个活动结果集 (允许使用同一连接执行多个操作。

如果使用 ExecuteReaderBeginExecuteReader 访问 XML 数据,SQL Server将返回长度超过 2,033 个字符的任何 XML 结果,每行包含 2,033 个字符。 若要避免此行为,请使用 ExecuteXmlReaderBeginExecuteXmlReader 读取 FOR XML 查询。

另请参阅

适用于