共用方式為


SqlCommand.ExecuteReader 方法

定義

多載

ExecuteReader()

CommandText將 傳送至 Connection ,並建置 SqlDataReader

ExecuteReader(CommandBehavior)

CommandText將 傳送至 Connection ,並使用其中 CommandBehavior 一個值來建置 SqlDataReader

ExecuteReader()

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 物件。

例外狀況

SqlDbType當 設定 Stream 為 時 Value ,使用了BinaryVarBinary以外的 。 如需串流的詳細資訊,請參閱 SqlClient 串流支援

-或-

SqlDbType當 設定 TextReader 為 時 Value ,會使用CharNCharNVarCharVarCharXml以外的 。

-或-

SqlDbType當 設定 XmlReader 為 時 Value ,會使用Xml以外的 。

對鎖定的資料列執行命令時發生例外狀況。 當您使用 Microsoft .NET Framework 1.0 版時不會產生這個例外狀況。

-或-

串流作業期間發生逾時。 如需串流的詳細資訊,請參閱 SqlClient 串流支援

連接目前的狀態已關閉。 ExecuteReader() 需要開啟 SqlConnection 的 。

-或-

在串流作業期間已關閉或卸除的 SqlConnection。 如需串流的詳細資訊,請參閱 SqlClient 串流支援

在串流作業期間, XmlReaderTextReader 物件中 Stream 發生錯誤。 如需串流的詳細資訊,請參閱 SqlClient 串流支援

XmlReaderStream 串流作業期間,或 TextReader 物件已關閉。 如需串流的詳細資訊,請參閱 SqlClient 串流支援

範例

下列範例會 SqlCommand 建立 ,然後傳遞 Transact-SQL SELECT 語句的字串,以及用來連接到資料來源的字串來執行它。

// <Snippet1>
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]));
            }
        }
    }
    // </Snippet1>
}

備註

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:
 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 物件。

例外狀況

SqlDbType當 設定 Stream 為 時 Value ,使用了BinaryVarBinary以外的 。 如需串流的詳細資訊,請參閱 SqlClient 串流支援

-或-

SqlDbType當 設定 TextReader 為 時 Value ,會使用CharNCharNVarCharVarCharXml以外的 。

-或-

SqlDbType當 設定 XmlReader 為 時 Value ,會使用Xml以外的 。

串流作業期間發生逾時。 如需串流的詳細資訊,請參閱 SqlClient 串流支援

在串流作業期間, XmlReaderTextReader 物件中 Stream 發生錯誤。 如需串流的詳細資訊,請參閱 SqlClient 串流支援

在串流作業期間已關閉或卸除的 SqlConnection。 如需串流的詳細資訊,請參閱 SqlClient 串流支援

XmlReaderStream 串流作業期間,或 TextReader 物件已關閉。 如需串流的詳細資訊,請參閱 SqlClient 串流支援

範例

下列範例會 SqlCommand 建立 ,然後傳遞 Transact-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 時,此命令會執行這個預存程式。

注意

使用 SequentialAccess 擷取大型值和二進位資料。 否則,可能會發生 , OutOfMemoryException 而且連接將會關閉。

多個作用中結果集 (MARS) 功能允許使用相同連線的多個動作。

如果您使用 ExecuteReaderBeginExecuteReader 存取 XML 資料,SQL Server會傳回長度大於 2,033 個字元的任何 XML 結果,每個資料列各 2,033 個字元。 若要避免這種行為,請使用 ExecuteXmlReaderBeginExecuteXmlReader 來讀取 FOR XML 查詢。

適用於