SqlCommand.ExecuteReader 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| ExecuteReader() |
將 CommandText 傳送到 並 Connection 建立 SqlDataReader。 |
| ExecuteReader(CommandBehavior) |
將 CommandText 傳送到 Connection,並利用其中一個SqlDataReader值來建立 。CommandBehavior |
ExecuteReader()
將 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 物件。
例外狀況
-
SqlDbType
Binary當 設定為 Stream時,會使用 Value A 以外的 或VarBinary。 欲了解更多串流資訊,請參閱 SqlClient 串流支援。 -
SqlDbType
VarCharNVarCharNCharXmlChar當 設定為 TextReader時,會使用 Value , 以外的 , 。 -
SqlDbType當 設定為 XmlReader時,會使用 Value A other than
Xml。
- 在執行指令時發生了例外,該指令在鎖定列時發生。 當你使用 Microsoft .NET Framework 1.0 版本時,此例外不會產生。
- 串流操作中發生了一次超時。 欲了解更多串流資訊,請參閱 SqlClient 串流支援。
- 目前連線狀態已關閉。 ExecuteReader() 需要一個開的 SqlConnection。
- 在 SqlConnection 串流操作中關閉或掉落。 欲了解更多串流資訊,請參閱 SqlClient 串流支援。
在串流操作中,物件或 發生StreamXmlReaderTextReader錯誤。 欲了解更多串流資訊,請參閱 SqlClient 串流支援。
Stream該 , XmlReader 或TextReader物件在串流操作中被關閉。 欲了解更多串流資訊,請參閱 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)功能允許使用同一連線進行多個動作。
如果您使用 ExecuteReader 或 BeginExecuteReader 存取 XML 資料,SQL Server 會以多列 2,033 字元返回任何長度超過 2,033 字元的 XML 結果。 為避免此行為,請使用 ExecuteXmlReader 或 BeginExecuteXmlReader 讀取 FOR XML 查詢。
適用於
ExecuteReader(CommandBehavior)
將 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該 , XmlReader 或TextReader物件在串流操作中被關閉。 欲了解更多串流資訊,請參閱 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)功能允許使用同一連線進行多個動作。
如果您使用 ExecuteReader 或 BeginExecuteReader 存取 XML 資料,SQL Server 會以多列 2,033 字元返回任何長度超過 2,033 字元的 XML 結果。 為避免此行為,請使用 ExecuteXmlReader 或 BeginExecuteXmlReader 讀取 FOR XML 查詢。