SqlCommand.ExecuteReader 方法
將 CommandText
發送到 Connection
並產生一個 SqlDataReader。
重載列表
| 名稱 |
說明 |
SqlCommand.ExecuteReader () |
將 CommandText 發送到 Connection 並產生一個 SqlDataReader。 由 .NET Compact Framework 支援。 |
SqlCommand.ExecuteReader (CommandBehavior) |
將 CommandText 發送到 Connection,並使用 CommandBehavior 值之一產生一個 SqlDataReader。 由 .NET Compact Framework 支援。 |
SqlCommand.ExecuteReader 方法 ()
將 CommandText
發送到 Connection
並產生一個 SqlDataReader。
命名空間:System.Data.SqlClient
程式集:System.Data(在 system.data.dll
中)
文法
C#
public SqlDataReader ExecuteReader ()
C++
public:SqlDataReader^ ExecuteReader ()
J#
public SqlDataReader ExecuteReader ()
JScript
public function ExecuteReader () : SqlDataReader
傳回值
一個 SqlDataReader 對象。 異常
| 異常類型 |
條件 |
Exception |
未能執行此命令。 |
SqlException |
在對鎖定的行執行該命令期間發生了異常。如果使用的是 Microsoft .NET Framework 1.0 版,將不會產生該異常。 |
備忘
當 CommandType
屬性設定為 StoredProcedure 時,CommandText 屬性應設定為預存程序的名稱。當調用
ExecuteReader 時,該命令將執行此預存程序。
如果使用 SQL Server 2005 之前的 SQL Server 版本,在使用 SqlDataReader 時,關聯的 SqlConnection
將忙於為 SqlDataReader 服務。當處於此狀態時,除了關閉 SqlConnection
外,不能對其執行其他任何操作。除非調用 SqlDataReader 的 Close
方法,否則會一直處於此狀態。從 SQL Server 2005 開始,多活動結果集 (MARS) 功能允許多個操作使用同一串連。
如果您使用 ExecuteReader 或 BeginExecuteReader
訪問 XML 資料,SQL Server 將以多行(每行 2,033 個字元)方式返回長度大於 2,033 個字元的所有 XML
結果。若要避免發生此行為,請使用 ExecuteXmlReader
或 BeginExecuteXmlReader
讀取 FOR XML 查詢。有關更多資訊,請參見位於 http://support.microsoft.com/default.aspx?ln=zh-cn.
上的 Microsoft 知識庫中的文章 Q310378“PRB: XML Data Is Truncated When You Use
SqlDataReader”(PRB:使用 SqlDataReader 時 XML 資料被截斷)。
樣本
下面的樣本建立一個 SqlCommand,然後通過傳遞兩個字串來執行它,其中一個字串是
Transact-SQL SELECT 語句,另一個字串用於串連至資料來源。
C#
複製代碼
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]));}}
}
SqlCommand.ExecuteReader 方法 (CommandBehavior)
將 CommandText
發送到 Connection,並使用
CommandBehavior 值之一產生一個 SqlDataReader。
命名空間:System.Data.SqlClient
程式集:System.Data(在 system.data.dll
中)
文法
C#
public SqlDataReader ExecuteReader (CommandBehavior behavior)
參數
-
behavior
-
CommandBehavior
值之一。
傳回值
一個 SqlDataReader 對象。 備忘
當 CommandType
屬性設定為 StoredProcedure 時,CommandText 屬性應設定為預存程序的名稱。當調用 ExecuteReader
時,該命令將執行此預存程序。
SqlDataReader 支援一種特殊的模式,在此模式下可以有效地讀取較大的二進位值。有關更多資訊,請參見
CommandBehavior 的 SequentialAccess 設定。
如果使用 SQL Server 2005 之前的 SQL Server 版本,在使用 SqlDataReader 時,關聯的 SqlConnection
將忙於為 SqlDataReader 服務。當處於此狀態時,除了關閉 SqlConnection
外,不能對其執行其他任何操作。在調用 SqlDataReader.Close
方法之前一直如此。如果建立了 SqlDataReader 並將 CommandBehavior 設定為
CloseConnection,則關閉 SqlDataReader 會自動關閉此串連。從 SQL Server 2005
開始,多活動結果集 (MARS) 功能允許多個操作使用同一串連。
如果您使用 ExecuteReader 或 BeginExecuteReader
訪問 XML 資料,SQL Server 將以多行(每行 2,033 個字元)方式返回長度大於 2,033 個字元的所有 XML
結果。若要避免發生此行為,請使用 ExecuteXmlReader
或 BeginExecuteXmlReader
讀取 FOR XML 查詢。有關更多資訊,請參見位於 http://support.microsoft.com/default.aspx?ln=zh-cn.
上的 Microsoft 知識庫中的文章 Q310378“PRB: XML Data Is Truncated When You Use
SqlDataReader”(PRB:使用 SqlDataReader 時 XML 資料被截斷)。
樣本
下面的樣本建立一個 SqlCommand,然後通過傳遞兩個字串來執行它,其中一個字串是
Transact-SQL SELECT 語句,另一個字串用於串連至資料來源。CommandBehavior 設定為 CloseConnection。
C#
複製代碼
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]));}}
}