SqlCommand.ExecuteReader 方法

定义

重载

名称 说明
ExecuteReader()

CommandText 它发送到 Connection 并生成一个 SqlDataReader

ExecuteReader(CommandBehavior)

将值CommandText发送到Connection其中一个值,并生成一个SqlDataReaderCommandBehavior值。

ExecuteReader()

Source:
SqlCommand.cs
Source:
SqlCommand.cs
Source:
SqlCommand.cs
Source:
SqlCommand.cs

CommandText 它发送到 Connection 并生成一个 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 流式处理支持

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

Stream XmlReader流式处理操作期间关闭或TextReader对象。 有关流式处理的详细信息,请参阅 SqlClient 流式处理支持

示例

以下示例创建一个字符串,然后通过传递一个 SqlCommandTransact-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) 功能允许使用同一连接执行多个操作。

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

适用于

ExecuteReader(CommandBehavior)

Source:
SqlCommand.cs
Source:
SqlCommand.cs
Source:
SqlCommand.cs
Source:
SqlCommand.cs

将值CommandText发送到Connection其中一个值,并生成一个SqlDataReaderCommandBehavior值。

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

返回

SqlDataReader 对象。

例外

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

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

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

Stream XmlReader流式处理操作期间关闭或TextReader对象。 有关流式处理的详细信息,请参阅 SqlClient 流式处理支持

示例

以下示例创建一个字符串,然后通过传递一个 SqlCommandTransact-SQL SELECT 语句的字符串以及一个用于连接到数据源的字符串来执行该字符串。 将 CommandBehavior 设置为 CloseConnection

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) 功能允许使用同一连接执行多个操作。

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

适用于