SqlDataReader 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供從 SQL Server 資料庫中讀取順向資料流資料列的方式。 此類別無法獲得繼承。
public ref class SqlDataReader : System::Data::Common::DbDataReader, IDisposable
public ref class SqlDataReader : System::Data::Common::DbDataReader, IDisposable, System::Data::Common::IDbColumnSchemaGenerator
public ref class SqlDataReader : System::Data::Common::DbDataReader
public class SqlDataReader : System.Data.Common.DbDataReader, IDisposable
public class SqlDataReader : System.Data.Common.DbDataReader, IDisposable, System.Data.Common.IDbColumnSchemaGenerator
public class SqlDataReader : System.Data.Common.DbDataReader
type SqlDataReader = class
inherit DbDataReader
interface IDataReader
interface IDisposable
interface IDataRecord
type SqlDataReader = class
inherit DbDataReader
interface IDataReader
interface IDataRecord
interface IDisposable
type SqlDataReader = class
inherit DbDataReader
interface IDbColumnSchemaGenerator
interface IDisposable
type SqlDataReader = class
inherit DbDataReader
interface IDbColumnSchemaGenerator
interface IDataReader
interface IDataRecord
interface IDisposable
type SqlDataReader = class
inherit DbDataReader
interface IDisposable
Public Class SqlDataReader
Inherits DbDataReader
Implements IDisposable
Public Class SqlDataReader
Inherits DbDataReader
Implements IDbColumnSchemaGenerator, IDisposable
Public Class SqlDataReader
Inherits DbDataReader
- 繼承
-
SqlDataReader
- 實作
範例
下列範例會建立 SqlConnection 、、 SqlCommand 和 SqlDataReader 。 此範例會讀取資料,並將它寫出主控台視窗。 然後程式碼會 SqlDataReader 關閉 。 會在 SqlConnection 程式碼區塊結尾 using
自動關閉 。
using Microsoft.Data.SqlClient;
class Program
{
static void Main()
{
string str = "Data Source=(local);Initial Catalog=Northwind;"
+ "Integrated Security=SSPI";
ReadOrderData(str);
}
private static void ReadOrderData(string connectionString)
{
string queryString =
"SELECT OrderID, CustomerID FROM dbo.Orders;";
using (SqlConnection connection =
new SqlConnection(connectionString))
{
SqlCommand command =
new SqlCommand(queryString, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
// Call Read before accessing data.
while (reader.Read())
{
ReadSingleRow((IDataRecord)reader);
}
// Call Close when done reading.
reader.Close();
}
}
private static void ReadSingleRow(IDataRecord record)
{
Console.WriteLine(String.Format("{0}, {1}", record[0], record[1]));
}
}
備註
若要建立 SqlDataReader ,您必須呼叫 ExecuteReader 物件的 方法 SqlCommand ,而不是直接使用建構函式。
SqlDataReader使用 時,相關聯的 SqlConnection 會忙於提供 SqlDataReader ,而且除了關閉作業之外,也無法對 SqlConnection 其他作業執行。 這是在呼叫 的 SqlDataReader 方法之前 Close 的情況。 例如,在呼叫 Close 之後,您才能擷取輸出參數。
正在讀取資料時,SqlDataReader
使用者會看到另一個處理序或執行緒對結果集所進行的變更。 但精確的行為取決於時間點。
IsClosed 與 RecordsAffected 是在關閉 SqlDataReader 後唯一可呼叫的屬性。 RecordsAffected雖然 可以在 存在時 SqlDataReader 存取 屬性,但一律先呼叫 ,再傳 Close 回 的值 RecordsAffected ,以確保正確的傳回值。
使用循序存取 () CommandBehavior.SequentialAccess 時, InvalidOperationException 如果 SqlDataReader 位置是進階的,而且在上一個資料行上嘗試另一個讀取作業,則會引發 。
注意
為了獲得最佳效能, SqlDataReader 請避免建立不必要的物件或建立不必要的資料複本。 因此,對方法的多個呼叫,例如 GetValue 傳回相同物件的參考。 如果您要修改方法所傳回之物件的基礎值,請小心,例如 GetValue 。
屬性
Connection |
取得與 SqlConnection 相關聯的 SqlDataReader。 |
Depth |
取得值,表示目前資料列的巢狀深度。 |
FieldCount |
取得目前資料列中的資料行數目。 |
HasRows |
取得值,指出 SqlDataReader 是否包含一個或多個資料列。 |
IsClosed |
擷取布林值,指出指定的 SqlDataReader 執行個體是否已關閉。 |
Item[Int32] |
提供資料行序數,取得使用原生格式的指定資料行值。 |
Item[String] |
提供資料行名稱,取得使用原生格式的指定資料行值。 |
RecordsAffected |
取得 Transact-SQL 陳述式的執行所變更、插入或刪除的資料列數目。 |
SensitivityClassification |
SensitivityClassification使用 取得資訊 SqlDataReader 。 |
VisibleFieldCount |
取得 SqlDataReader 中沒有隱藏的欄位數。 |
方法
明確介面實作
IDataRecord.GetData(Int32) |
傳回指定之資料行序數的 IDataReader。 |