SqlCommand.ExecuteReader 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將 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 時,使用 Binary 或 VarBinary 以外的 SqlDbType。 如需串流的詳細資訊,請參閱 SqlClient 串流支援。
-或-
SqlDbType當 設定為 TextReader時Value,使用 Char、NChar、NVarChar、VarChar 或 Xml 以外的 。
-或-
對鎖定的資料列執行命令時發生例外狀況。 當您使用 Microsoft .NET Framework 1.0 版時不會產生這個例外狀況。
-或-
串流作業期間發生逾時。 如需串流的詳細資訊,請參閱 SqlClient 串流支援。
連接目前的狀態已關閉。 ExecuteReader() 需要開啟的 SqlConnection。
-或-
在串流作業期間已關閉或卸除的 SqlConnection。 如需串流的詳細資訊,請參閱 SqlClient 串流支援。
Stream、XmlReader 或 TextReader 物件在串流作業期間發生錯誤。 如需串流的詳細資訊,請參閱 SqlClient 串流支援。
Stream、XmlReader 或 TextReader 物件在串流作業期間已關閉。 如需串流的詳細資訊,請參閱 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) 功能允許使用相同連線的多個動作。
如果您使用 ExecuteReader 或 BeginExecuteReader 存取 XML 數據,SQL Server 會以 2,033 個字元的多個數據列傳回長度大於 2,033 個字元的任何 XML 結果。 若要避免這種行為,請使用 ExecuteXmlReader 或 BeginExecuteXmlReader 來讀取 FOR XML 查詢。
另請參閱
- 在 ADO.NET 中傳送和修改資料
- SQL Server and ADO.NET (SQL Server 和 ADO.NET)
- ADO.NET 概觀 \(部分機器翻譯\)
適用於
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 時,使用 Binary 或 VarBinary 以外的 SqlDbType。 如需串流的詳細資訊,請參閱 SqlClient 串流支援。
-或-
SqlDbType當 設定為 TextReader時Value,使用 Char、NChar、NVarChar、VarChar 或 Xml 以外的 。
-或-
串流作業期間發生逾時。 如需串流的詳細資訊,請參閱 SqlClient 串流支援。
Stream、XmlReader 或 TextReader 物件在串流作業期間發生錯誤。 如需串流的詳細資訊,請參閱 SqlClient 串流支援。
在串流作業期間已關閉或卸除的 SqlConnection。 如需串流的詳細資訊,請參閱 SqlClient 串流支援。
Stream、XmlReader 或 TextReader 物件在串流作業期間已關閉。 如需串流的詳細資訊,請參閱 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) 功能允許使用相同連線的多個動作。
如果您使用 ExecuteReader 或 BeginExecuteReader 存取 XML 數據,SQL Server 會以 2,033 個字元的多個數據列傳回長度大於 2,033 個字元的任何 XML 結果。 若要避免這種行為,請使用 ExecuteXmlReader 或 BeginExecuteXmlReader 來讀取 FOR XML 查詢。