SqlCommand.ExecuteReader 方法

定義

多載

名稱 Description
ExecuteReader()

CommandText 傳送到 並 Connection 建立 SqlDataReader

ExecuteReader(CommandBehavior)

CommandText 傳送到 Connection,並利用其中一個SqlDataReader值來建立 。CommandBehavior

ExecuteReader()

來源:
SqlCommand.cs
來源:
SqlCommand.cs
來源:
SqlCommand.cs
來源:
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該 , XmlReaderTextReader物件在串流操作中被關閉。 欲了解更多串流資訊,請參閱 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)功能允許使用同一連線進行多個動作。

如果您使用 ExecuteReaderBeginExecuteReader 存取 XML 資料,SQL Server 會以多列 2,033 字元返回任何長度超過 2,033 字元的 XML 結果。 為避免此行為,請使用 ExecuteXmlReaderBeginExecuteXmlReader 讀取 FOR XML 查詢。

適用於

ExecuteReader(CommandBehavior)

來源:
SqlCommand.cs
來源:
SqlCommand.cs
來源:
SqlCommand.cs
來源:
SqlCommand.cs

CommandText 傳送到 Connection,並利用其中一個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 價值。

傳回

SqlDataReader 物件。

例外狀況

串流操作中發生了一次超時。 欲了解更多串流資訊,請參閱 SqlClient 串流支援

在串流操作中,物件或 發生StreamXmlReaderTextReader錯誤。 欲了解更多串流資訊,請參閱 SqlClient 串流支援

SqlConnection 串流操作中關閉或掉落。 欲了解更多串流資訊,請參閱 SqlClient 串流支援

Stream該 , XmlReaderTextReader物件在串流操作中被關閉。 欲了解更多串流資訊,請參閱 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時,指令會執行這個儲存程序。

Note

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

多重主動結果集(MARS)功能允許使用同一連線進行多個動作。

如果您使用 ExecuteReaderBeginExecuteReader 存取 XML 資料,SQL Server 會以多列 2,033 字元返回任何長度超過 2,033 字元的 XML 結果。 為避免此行為,請使用 ExecuteXmlReaderBeginExecuteXmlReader 讀取 FOR XML 查詢。

適用於