SqlDataReader 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供一種從 SQL Server 資料庫讀取僅向前列資料流的方法。 此類別無法獲得繼承。
新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。
public ref class SqlDataReader : System::Data::Common::DbDataReader, IDisposable
public ref class SqlDataReader sealed : MarshalByRefObject, IDisposable, System::Collections::IEnumerable, System::Data::IDataReader
public class SqlDataReader : System.Data.Common.DbDataReader, IDisposable
public sealed class SqlDataReader : MarshalByRefObject, IDisposable, System.Collections.IEnumerable, System.Data.IDataReader
type SqlDataReader = class
inherit DbDataReader
interface IDisposable
type SqlDataReader = class
inherit MarshalByRefObject
interface IEnumerable
interface IDataReader
interface IDisposable
interface IDataRecord
type SqlDataReader = class
inherit DbDataReader
interface IDataReader
interface IDisposable
interface IDataRecord
Public Class SqlDataReader
Inherits DbDataReader
Implements IDisposable
Public NotInheritable Class SqlDataReader
Inherits MarshalByRefObject
Implements IDataReader, IDisposable, IEnumerable
- 繼承
- 繼承
- 繼承
- 實作
範例
以下範例可產生一個SqlConnection、一個SqlCommand、一個。SqlDataReader 範例會讀取資料,並寫入主控台視窗。 程式碼接著會關閉 SqlDataReader。 在 SqlConnection 程式碼區塊結束 using 時會自動關閉。
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 dataRecord)
{
Console.WriteLine(String.Format("{0}, {1}", dataRecord[0], dataRecord[1]));
}
Private Sub ReadOrderData(ByVal connectionString As String)
Dim queryString As String = _
"SELECT OrderID, CustomerID FROM dbo.Orders;"
Using connection As New SqlConnection(connectionString)
Dim command As New SqlCommand(queryString, connection)
connection.Open()
Dim reader As SqlDataReader = command.ExecuteReader()
' Call Read before accessing data.
While reader.Read()
ReadSingleRow(CType(reader, IDataRecord))
End While
' Call Close when done reading.
reader.Close()
End Using
End Sub
Private Sub ReadSingleRow(ByVal record As IDataRecord)
Console.WriteLine(String.Format("{0}, {1}", record(0), record(1)))
End Sub
備註
要建立 , SqlDataReader你必須呼叫 ExecuteReader 物件 SqlCommand 的方法,而不是直接使用建構子。
在 被使用時 SqlDataReader ,關聯 SqlConnection 節點正忙於服務 SqlDataReader,且除了關閉 之外,無法對其他操作執行 SqlConnection 。 直到呼叫 的方法Close為止,情況會一直如此SqlDataReader。 例如,你無法在呼叫 Close之前取得輸出參數。
在資料讀取過程中,其他程序或執行緒對結果所做的變更,使用者可能會看到 SqlDataReader。 不過,精確的行為取決於時間。
IsClosed 和 RecordsAffected 是關閉後 SqlDataReader 你唯一能調用的屬性。 雖然RecordsAffected在 存在SqlDataReader時可存取該屬性,但在回傳 值Close前務必呼叫RecordsAffected,以確保返回值準確。
使用序列存取(CommandBehavior.SequentialAccess),若位置InvalidOperationException前進且嘗試對前一欄進行另一筆讀取操作,則會提高 。SqlDataReader
Note
為了達到最佳效能,避免 SqlDataReader 建立不必要的物件或製作不必要的資料複製。 因此,多次呼叫方法 GetValue 如回傳同一物件的參考。 若你正在修改像是 等方法 GetValue回傳物件的底層值,請謹慎。
屬性
| 名稱 | Description |
|---|---|
| Connection |
得到 SqlConnection 與 SqlDataReader相關聯的 。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| Depth |
取得值,這個值表示目前數據列的巢狀深度。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| FieldCount |
取得目前數據列中的數據行數目。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| HasRows |
會得到一個值,表示是否 SqlDataReader 包含一列或多列。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| IsClosed |
取得一個布林值,表示指定 SqlDataReader 實例是否已被關閉。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| Item[Int32] |
取得指定資料行的原生格式,指定資料行序數的值。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| Item[String] |
取得指定數據行名稱的原生格式指定數據行的值。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| RecordsAffected |
透過執行 Transact-SQL 陳述句,取得變更、插入或刪除的列數。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| VisibleFieldCount |
取得中未被隱藏的欄位 SqlDataReader 數量。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
方法
| 名稱 | Description |
|---|---|
| Close() |
關閉 SqlDataReader 物件。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| CreateObjRef(Type) |
建立一個物件,包含產生代理伺服器所需的所有相關資訊,用於與遠端物件通訊。 (繼承來源 MarshalByRefObject) |
| Dispose() |
釋放目前類別實例 DbDataReader 所使用的所有資源。 (繼承來源 DbDataReader) |
| Dispose(Boolean) |
釋放 未管理的資源, DbDataReader 並可選擇性地釋放受管理資源。 (繼承來源 DbDataReader) |
| Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
| GetBoolean(Int32) |
取得指定之數據行的值做為布爾值。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetByte(Int32) |
取得指定數據行的值做為位元組。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetBytes(Int32, Int64, Byte[], Int32, Int32) |
從指定的欄位偏移量讀取一串位元組到緩衝區,該陣列從指定緩衝區偏移開始。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetChar(Int32) |
以單一字元的形式取得指定欄位的值。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetChars(Int32, Int64, Char[], Int32, Int32) |
從指定的數據行位移讀取字串流到緩衝區,做為從指定緩衝區位移開始的陣列。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetData(Int32) |
回傳指定欄位序數的 a IDataReader 。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetData(Int32) |
回傳所請求欄位的巢狀資料讀取器。 (繼承來源 DbDataReader) |
| GetDataTypeName(Int32) |
取得代表指定欄位資料型態的字串。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetDateTime(Int32) |
取得指定欄位的值作為 DateTime 物件。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetDateTimeOffset(Int32) |
將指定欄位 DateTimeOffset 的值作為物件取得。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetDbDataReader(Int32) |
回傳 DbDataReader 請求欄位序數的物件,該物件可用提供者專屬實作覆寫。 (繼承來源 DbDataReader) |
| GetDecimal(Int32) |
取得指定欄位的值作為 Decimal 物件。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetDouble(Int32) |
取得指定欄位的值,為雙精度浮點數。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetEnumerator() |
傳回逐一查看 IEnumerator的 SqlDataReader。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetFieldType(Int32) |
取得 Type 那是物件的資料型別。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetFieldValue<T>(Int32) |
同步取得指定欄位的值作為一種型別。 GetFieldValueAsync<T>(Int32, CancellationToken) 是此方法的非同步版本。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetFieldValueAsync<T>(Int32, CancellationToken) |
非同步取得指定欄位的值作為型別。 GetFieldValue<T>(Int32) 是此方法的同步版本。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetFieldValueAsync<T>(Int32) |
以異步方式取得指定數據行的值做為要求的型別。 (繼承來源 DbDataReader) |
| GetFloat(Int32) |
取得指定欄位的值為單精度浮點數。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetGuid(Int32) |
取得指定數據行的值,做為全域唯一標識碼 (GUID)。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetHashCode() |
做為預設哈希函式。 (繼承來源 Object) |
| GetInt16(Int32) |
取得指定數據行的值,做為16位帶正負號的整數。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetInt32(Int32) |
取得指定數據行的值,做為32位帶正負號的整數。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetInt64(Int32) |
取得指定數據行的值,做為64位帶正負號的整數。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetLifetimeService() |
已淘汰.
擷取控制這個實例存留期原則的目前存留期服務物件。 (繼承來源 MarshalByRefObject) |
| GetName(Int32) |
取得指定數據行的名稱。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetOrdinal(String) |
取得資料列序數,指定資料行的名稱。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetProviderSpecificFieldType(Int32) |
得到 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetProviderSpecificValue(Int32) |
得到的是一個 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetProviderSpecificValues(Object[]) |
會獲得一組物件陣列,代表底層提供者的特定值。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetSchemaTable() |
回傳描述 欄位元資料DataTable的 aSqlDataReader。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetSqlBinary(Int32) |
取得指定欄位的值為 SqlBinary。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetSqlBoolean(Int32) |
取得指定欄位的值為 SqlBoolean。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetSqlByte(Int32) |
取得指定欄位的值為 SqlByte。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetSqlBytes(Int32) |
取得指定欄位的值為 SqlBytes。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetSqlChars(Int32) |
取得指定欄位的值為 SqlChars。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetSqlDateTime(Int32) |
取得指定欄位的值為 SqlDateTime。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetSqlDecimal(Int32) |
取得指定欄位的值為 SqlDecimal。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetSqlDouble(Int32) |
取得指定欄位的值為 SqlDouble。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetSqlGuid(Int32) |
取得指定欄位的值為 SqlGuid。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetSqlInt16(Int32) |
取得指定欄位的值為 SqlInt16。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetSqlInt32(Int32) |
取得指定欄位的值為 SqlInt32。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetSqlInt64(Int32) |
取得指定欄位的值為 SqlInt64。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetSqlMoney(Int32) |
取得指定欄位的值為 SqlMoney。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetSqlSingle(Int32) |
取得指定欄位的值為 SqlSingle。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetSqlString(Int32) |
取得指定欄位的值為 SqlString。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetSqlValue(Int32) |
會以 SQL Server 類型回傳指定欄位中的資料值。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetSqlValues(Object[]) |
填充一個陣列 Object ,包含記錄中所有欄位的值,這些欄位以 SQL Server 類型表示。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetSqlXml(Int32) |
會取得指定欄位的值,作為 XML 值。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetStream(Int32) |
以 . 形式檢索二進位、影像、變異、UDT 及變體資料型別 Stream。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetString(Int32) |
取得指定數據行的值做為字串。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetTextReader(Int32) |
擷取 Char、NChar、NText、NVarChar、text、varChar 及 Variant 資料型別。TextReader 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetTimeSpan(Int32) |
將指定欄位 TimeSpan 的值作為物件取得。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetType() |
取得目前實例的 Type。 (繼承來源 Object) |
| GetValue(Int32) |
取得指定欄位的本位格式值。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetValues(Object[]) |
使用目前數據列的數據行值填入 物件的陣列。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| GetXmlReader(Int32) |
以 . 形式擷取 XML XmlReader型別的資料。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| InitializeLifetimeService() |
已淘汰.
取得存留期服務物件,以控制這個實例的存留期原則。 (繼承來源 MarshalByRefObject) |
| IsCommandBehavior(CommandBehavior) |
判斷指定的 CommandBehavior 是否與 的 相符 SqlDataReader 。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| IsDBNull(Int32) |
會得到一個值,表示該欄位是否包含不存在或缺失的值。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| IsDBNullAsync(Int32, CancellationToken) |
非同步版本的 IsDBNull(Int32),該欄位獲得一個值,指示欄位是否包含不存在或缺失值。 取消標記可用來請求在指令逾時前放棄操作。 例外將透過回傳的任務物件回報。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| IsDBNullAsync(Int32) |
以異步方式取得值,指出數據行是否包含不存在或遺漏的值。 (繼承來源 DbDataReader) |
| MemberwiseClone() |
建立目前 Object的淺層複本。 (繼承來源 Object) |
| MemberwiseClone(Boolean) |
建立目前 MarshalByRefObject 對象的淺層複本。 (繼承來源 MarshalByRefObject) |
| NextResult() |
讀取批次 Transact-SQL 語句結果時,資料讀取器會將資料推進到下一個結果。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| NextResultAsync() |
讀取語句批次的結果時,以異步方式將讀取器前進到下一個結果。 (繼承來源 DbDataReader) |
| NextResultAsync(CancellationToken) |
非同步版本 NextResult()的 ,讀取批次 Transact-SQL 語句結果時,資料讀取器會將資料推進到下一個結果。
|
| Read() |
推進到 SqlDataReader 下一個紀錄。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| ReadAsync() |
以異步方式將讀取器前進到結果集中的下一筆記錄。 (繼承來源 DbDataReader) |
| ReadAsync(CancellationToken) |
一個非同步版本的 Read(),將 推進 SqlDataReader 到下一個記錄。 取消標記可用來請求在指令逾時前放棄操作。 例外將透過回傳的任務物件回報。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| ToString() |
傳回表示目前 物件的字串。 (繼承來源 Object) |
明確介面實作
| 名稱 | Description |
|---|---|
| IDataReader.Close() |
關於此成員的描述,請參見 Close()。 (繼承來源 DbDataReader) |
| IDataReader.GetSchemaTable() |
關於此成員的描述,請參見 GetSchemaTable()。 (繼承來源 DbDataReader) |
| IDataRecord.GetData(Int32) |
回傳指定欄位序數的 a IDataReader 。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| IDataRecord.GetData(Int32) |
關於此成員的描述,請參見 GetData(Int32)。 (繼承來源 DbDataReader) |
| IDisposable.Dispose() |
釋放資料讀取器所使用的所有資源。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
| IEnumerable.GetEnumerator() |
回傳一個枚舉器,可用於遍歷項目集合。 新開發的話,請使用 Microsoft。Data.SqlClient。 本頁說明了 System.Data.SqlClient。 |
擴充方法
| 名稱 | Description |
|---|---|
| AsParallel(IEnumerable) |
啟用查詢的平行處理。 |
| AsQueryable(IEnumerable) |
將 IEnumerable 轉換成 IQueryable。 |
| CanGetColumnSchema(DbDataReader) |
會得到一個值,表示 a DbDataReader 是否能取得欄位結構。 |
| Cast<TResult>(IEnumerable) |
將 IEnumerable 的項目轉換成指定的型別。 |
| GetColumnSchema(DbDataReader) |
取得欄位結構(DbColumn 集合)的 DbDataReader。 |
| OfType<TResult>(IEnumerable) |
根據指定的型別篩選 IEnumerable 的專案。 |