共用方式為


SqlCommand.ExecuteReader 方法

定義

CommandText 傳送到 並 Connection 建立 SqlDataReader

多載

名稱 Description
ExecuteReader()

CommandText 傳送到 並 Connection 建立 SqlDataReader

ExecuteReader(CommandBehavior)

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

ExecuteReader()

來源:
System.Data.SqlClient.notsupported.cs

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

例外狀況

當 設定為 Stream時,會使用除 BinaryVarBinary 以外的 。ValueSqlDbType 欲了解更多串流資訊,請參閱 SqlClient 串流支援

-或-

SqlDbType除了 Char、NChar、NVarChar、VarCharXml,當 Value 設定為 TextReader時,會使用其他 CharNChar、NVarChar、VarChar 或 Xml。

-或-

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

在執行指令時發生了例外,該指令在鎖定列時發生。 當你使用 Microsoft .NET Framework 1.0 版本時,此例外不會產生。

-或-

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

目前連線狀態已關閉。 ExecuteReader() 需要一個開的 SqlConnection

-或-

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

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

Stream該 , XmlReaderTextReader物件在串流操作中被關閉。 欲了解更多串流資訊,請參閱 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 字元返回任何長度超過 2,033 字元的 XML 結果。 為避免此行為,請使用 ExecuteXmlReaderBeginExecuteXmlReader 讀取 FOR XML 查詢。

另請參閱

適用於

ExecuteReader(CommandBehavior)

來源:
System.Data.SqlClient.notsupported.cs

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

例外狀況

當 設定為 Stream時,會使用除 BinaryVarBinary 以外的 。ValueSqlDbType 欲了解更多串流資訊,請參閱 SqlClient 串流支援

-或-

SqlDbType除了 Char、NChar、NVarChar、VarCharXml,當 Value 設定為 TextReader時,會使用其他 CharNChar、NVarChar、VarChar 或 Xml。

-或-

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

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

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

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

Stream該 , XmlReaderTextReader物件在串流操作中被關閉。 欲了解更多串流資訊,請參閱 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 字元返回任何長度超過 2,033 字元的 XML 結果。 為避免此行為,請使用 ExecuteXmlReaderBeginExecuteXmlReader 讀取 FOR XML 查詢。

另請參閱

適用於