SqlCommand.ExecuteReader 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
ExecuteReader() |
CommandText將 傳送至 Connection ,並建置 SqlDataReader 。 |
ExecuteReader(CommandBehavior) |
CommandText將 傳送至 Connection ,並使用其中 CommandBehavior 一個值來建置 SqlDataReader 。 |
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當 設定 Stream 為 時 Value ,使用了Binary或VarBinary以外的 。 如需串流的詳細資訊,請參閱 SqlClient 串流支援。
-或-
SqlDbType當 設定 TextReader 為 時 Value ,會使用Char、NChar、NVarChar、VarChar或Xml以外的 。
-或-
對鎖定的資料列執行命令時發生例外狀況。 當您使用 Microsoft .NET Framework 1.0 版時不會產生這個例外狀況。
-或-
串流作業期間發生逾時。 如需串流的詳細資訊,請參閱 SqlClient 串流支援。
連接目前的狀態已關閉。 ExecuteReader() 需要開啟 SqlConnection 的 。
-或-
在串流作業期間已關閉或卸除的 SqlConnection。 如需串流的詳細資訊,請參閱 SqlClient 串流支援。
在串流作業期間, XmlReader 或 TextReader 物件中 Stream 發生錯誤。 如需串流的詳細資訊,請參閱 SqlClient 串流支援。
XmlReader在 Stream 串流作業期間,或 TextReader 物件已關閉。 如需串流的詳細資訊,請參閱 SqlClient 串流支援。
範例
下列範例會 SqlCommand 建立 ,然後傳遞 Transact-SQL SELECT 語句的字串,以及用來連接到資料來源的字串來執行它。
// <Snippet1>
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]));
}
}
}
// </Snippet1>
}
備註
CommandType當 屬性設定為 StoredProcedure
時, CommandText 屬性應該設定為預存程式的名稱。 當您呼叫 ExecuteReader 時,此命令會執行這個預存程式。
注意
如果交易已死結,在呼叫 之前 Read 可能不會擲回例外狀況。
多個作用中結果集 (MARS) 功能允許使用相同連線的多個動作。
如果您使用 ExecuteReader 或 BeginExecuteReader 存取 XML 資料,SQL Server會傳回長度大於 2,033 個字元的任何 XML 結果,每個資料列各 2,033 個字元。 若要避免這種行為,請使用 ExecuteXmlReader 或 BeginExecuteXmlReader 來讀取 FOR XML 查詢。
適用於
ExecuteReader(CommandBehavior)
CommandText將 傳送至 Connection ,並使用其中 CommandBehavior 一個值來建置 SqlDataReader 。
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 物件。
例外狀況
SqlDbType當 設定 Stream 為 時 Value ,使用了Binary或VarBinary以外的 。 如需串流的詳細資訊,請參閱 SqlClient 串流支援。
-或-
SqlDbType當 設定 TextReader 為 時 Value ,會使用Char、NChar、NVarChar、VarChar或Xml以外的 。
-或-
串流作業期間發生逾時。 如需串流的詳細資訊,請參閱 SqlClient 串流支援。
在串流作業期間, XmlReader 或 TextReader 物件中 Stream 發生錯誤。 如需串流的詳細資訊,請參閱 SqlClient 串流支援。
在串流作業期間已關閉或卸除的 SqlConnection。 如需串流的詳細資訊,請參閱 SqlClient 串流支援。
XmlReader在 Stream 串流作業期間,或 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 時,此命令會執行這個預存程式。
注意
使用 SequentialAccess 擷取大型值和二進位資料。 否則,可能會發生 , OutOfMemoryException 而且連接將會關閉。
多個作用中結果集 (MARS) 功能允許使用相同連線的多個動作。
如果您使用 ExecuteReader 或 BeginExecuteReader 存取 XML 資料,SQL Server會傳回長度大於 2,033 個字元的任何 XML 結果,每個資料列各 2,033 個字元。 若要避免這種行為,請使用 ExecuteXmlReader 或 BeginExecuteXmlReader 來讀取 FOR XML 查詢。