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 時,使用 BinaryVarBinary 以外的 SqlDbType。 如需串流的詳細資訊,請參閱 SqlClient 串流支援

-或-

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

-或-

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

對鎖定的資料列執行命令時發生例外狀況。 當您使用 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 時,使用 BinaryVarBinary 以外的 SqlDbType。 如需串流的詳細資訊,請參閱 SqlClient 串流支援

-或-

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

-或-

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

串流作業期間發生逾時。 如需串流的詳細資訊,請參閱 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 查詢。

另請參閱

適用於