Поделиться через


SqlDataReader Класс

Определение

Предоставляет способ чтения потока строк последовательного доступа из базы данных SQL Server. Этот класс не наследуется.

public ref class SqlDataReader : System::Data::Common::DbDataReader, IDisposable
public ref class SqlDataReader sealed : MarshalByRefObject, IDisposable, System::Collections::IEnumerable, System::Data::IDataReader
public ref class SqlDataReader : System::Data::Common::DbDataReader, System::Data::Common::IDbColumnSchemaGenerator
public class SqlDataReader : System.Data.Common.DbDataReader, IDisposable
public sealed class SqlDataReader : MarshalByRefObject, IDisposable, System.Collections.IEnumerable, System.Data.IDataReader
public class SqlDataReader : System.Data.Common.DbDataReader, System.Data.Common.IDbColumnSchemaGenerator
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
type SqlDataReader = class
    inherit DbDataReader
    interface IDataReader
    interface IDataRecord
    interface IDisposable
    interface IDbColumnSchemaGenerator
Public Class SqlDataReader
Inherits DbDataReader
Implements IDisposable
Public NotInheritable Class SqlDataReader
Inherits MarshalByRefObject
Implements IDataReader, IDisposable, IEnumerable
Public Class SqlDataReader
Inherits DbDataReader
Implements IDbColumnSchemaGenerator
Наследование
SqlDataReader
Наследование
Наследование
SqlDataReader
Реализации

Примеры

В следующем примере создаются SqlConnection, SqlCommandи SqlDataReader. В этом примере данные считываются и записываются в окно консоли. Затем код закрывает SqlDataReader. автоматически SqlConnection закрывается в конце using блока кода.

using System;
using System.Data;
using System.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 dataRecord)
    {
        Console.WriteLine(String.Format("{0}, {1}", dataRecord[0], dataRecord[1]));
    }
}
Option Explicit On
Option Strict On

Imports System.Data
Imports System.Data.SqlClient

Module Module1

    Sub Main()
        Dim str As String = "Data Source=(local);Initial Catalog=Northwind;" _
       & "Integrated Security=SSPI;"
        ReadOrderData(str)
    End Sub

    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

End Module

Комментарии

Чтобы создать SqlDataReader, необходимо вызвать ExecuteReader метод SqlCommand объекта , а не напрямую использовать конструктор.

SqlDataReader Пока используется , связанный SqlConnection объект занят обслуживанием SqlDataReader, и никакие другие операции не могут быть выполнены для SqlConnection , кроме закрытия. Это происходит до тех пор, Close пока не будет вызван метод SqlDataReader объекта . Например, вы не сможете получить выходные параметры до тех пор, пока не вызовете 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

Возвращает число измененных, вставленных или удаленных строк при выполнении SQL-транзакций.

VisibleFieldCount

Возвращает число не скрытых полей в SqlDataReader.

Методы

Close()

Закрывает объект SqlDataReader.

Close()

Закрывает объект DbDataReader.

(Унаследовано от DbDataReader)
CloseAsync()

Асинхронно закрывает объект DbDataReader.

(Унаследовано от DbDataReader)
CreateObjRef(Type)

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

(Унаследовано от MarshalByRefObject)
Dispose()

Освобождает все ресурсы, используемые текущим экземпляром класса DbDataReader.

(Унаследовано от DbDataReader)
Dispose(Boolean)

Предоставляет способ чтения потока строк последовательного доступа из базы данных SQL Server. Этот класс не наследуется.

Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом DbDataReader, а при необходимости освобождает также управляемые ресурсы.

(Унаследовано от DbDataReader)
DisposeAsync()

Асинхронно освобождает все ресурсы, используемые текущим экземпляром класса DbDataReader.

(Унаследовано от DbDataReader)
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetBoolean(Int32)

Возвращает значение указанного столбца в виде логического значения.

GetByte(Int32)

Возвращает значение указанного столбца в виде байта.

GetBytes(Int32, Int64, Byte[], Int32, Int32)

Считывает поток байтов от указанного смещения столбца в буфер в виде массива, начиная с заданного смещения буфера.

GetChar(Int32)

Возвращает значение указанного столбца в виде одного символа.

GetChars(Int32, Int64, Char[], Int32, Int32)

Считывает поток символов от указанного смещения столбца в буфер в виде массива, начиная с заданного смещения буфера.

GetColumnSchema()

Получает коллекцию схемы столбца только для чтения.

GetColumnSchemaAsync(CancellationToken)

Это асинхронная версия метода GetColumnSchema(DbDataReader). Поставщики должны выполнить переопределение с помощью соответствующей реализации. При необходимости можно учитывать cancellationToken. Реализация по умолчанию вызывает синхронный метод GetColumnSchema(DbDataReader) и возвращает выполненную задачу. Реализация по умолчанию возвращает отмененную задачу, если ей передается уже отмененный cancellationToken. Исключения, создаваемые GetColumnSchema(DbDataReader), будут связаны через возвращаемое свойство исключения задачи.

(Унаследовано от DbDataReader)
GetData(Int32)

Возвращает IDataReader для указанного порядкового номера столбца.

GetData(Int32)

Возвращает вложенный объект чтения данных для запрошенного столбца.

(Унаследовано от DbDataReader)
GetDataTypeName(Int32)

Получает строку, представляющую тип данных в указанном столбце.

GetDateTime(Int32)

Возвращает значение указанного столбца в виде объекта DateTime.

GetDateTimeOffset(Int32)

Возвращает значение указанного столбца как объект DateTimeOffset.

GetDbDataReader(Int32)

Возвращает объект DbDataReader для запрошенного порядкового номера столбца, который может быть переопределен с помощью зависящей от поставщика реализации.

(Унаследовано от DbDataReader)
GetDecimal(Int32)

Возвращает значение указанного столбца в виде объекта Decimal.

GetDouble(Int32)

Возвращает значение указанного столбца в виде числа с плавающей запятой двойной точности.

GetEnumerator()

Возвращает объект IEnumerator, осуществляющий перебор SqlDataReader.

GetFieldType(Int32)

Возвращает тип Type, который является типом данных объекта.

GetFieldValue<T>(Int32)

Синхронно получает значение заданного столбца в виде типа. GetFieldValueAsync<T>(Int32, CancellationToken) — асинхронная версия этого метода.

GetFieldValue<T>(Int32)

Возвращает значение указанного столбца в виде запрошенного типа.

(Унаследовано от DbDataReader)
GetFieldValueAsync<T>(Int32)

Асинхронно возвращает значение указанного столбца в виде запрошенного типа.

(Унаследовано от DbDataReader)
GetFieldValueAsync<T>(Int32, CancellationToken)

Асинхронно получает значение заданного столбца в виде типа. GetFieldValue<T>(Int32) — синхронная версия этого метода.

GetFieldValueAsync<T>(Int32, CancellationToken)

Асинхронно возвращает значение указанного столбца в виде запрошенного типа.

(Унаследовано от DbDataReader)
GetFloat(Int32)

Возвращает значение заданного столбца в виде числа с плавающей запятой одинарной точности.

GetGuid(Int32)

Возвращает значение указанного столбца в виде глобально уникального идентификатора (GUID).

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetInt16(Int32)

Получает значение заданного столбца в виде 16-битового целого числа со знаком.

GetInt32(Int32)

Возвращает значение указанного столбца в виде 32-разрядного целого числа со знаком.

GetInt64(Int32)

Возвращает значение указанного столбца в виде 64-разрядного целого числа со знаком.

GetLifetimeService()
Устаревшие..

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.

(Унаследовано от MarshalByRefObject)
GetName(Int32)

Возвращает имя заданного столбца.

GetOrdinal(String)

Возвращает порядковый номер столбца при наличии заданного имени столбца.

GetProviderSpecificFieldType(Int32)

Возвращает Object, который представляет собой конкретный тип поля базового поставщика.

GetProviderSpecificValue(Int32)

Возвращает Object, который представляет собой значение типа, специфического для поставщика.

GetProviderSpecificValues(Object[])

Возвращает массив объектов, которые представляют собой значения типа, специфического для базового поставщика.

GetSchemaTable()

Возвращает объект DataTable, описывающий метаданные столбцов модуля чтения данных SqlDataReader.

GetSchemaTable()

Возвращает объект DataTable, описывающий метаданные столбцов модуля чтения данных DbDataReader. Возвращает null, если выполненная команда не вернула результирующий набор или если NextResult() возвращает false.

(Унаследовано от DbDataReader)
GetSchemaTableAsync(CancellationToken)

Это асинхронная версия метода GetSchemaTable(). Поставщики должны выполнить переопределение с помощью соответствующей реализации. При необходимости можно учитывать cancellationToken. Реализация по умолчанию вызывает синхронный метод GetSchemaTable() и возвращает выполненную задачу. Реализация по умолчанию возвращает отмененную задачу, если ей передается уже отмененный cancellationToken. Исключения, создаваемые GetSchemaTable(), будут связаны через возвращаемое свойство исключения задачи.

(Унаследовано от DbDataReader)
GetSqlBinary(Int32)

Возвращает значение заданного столбца в виде объекта SqlBinary.

GetSqlBoolean(Int32)

Возвращает значение заданного столбца в виде объекта SqlBoolean.

GetSqlByte(Int32)

Возвращает значение заданного столбца в виде объекта SqlByte.

GetSqlBytes(Int32)

Возвращает значение заданного столбца в виде объекта SqlBytes.

GetSqlChars(Int32)

Возвращает значение заданного столбца в виде объекта SqlChars.

GetSqlDateTime(Int32)

Возвращает значение заданного столбца в виде объекта SqlDateTime.

GetSqlDecimal(Int32)

Возвращает значение заданного столбца в виде объекта SqlDecimal.

GetSqlDouble(Int32)

Возвращает значение заданного столбца в виде объекта SqlDouble.

GetSqlGuid(Int32)

Возвращает значение заданного столбца в виде объекта SqlGuid.

GetSqlInt16(Int32)

Возвращает значение заданного столбца в виде объекта SqlInt16.

GetSqlInt32(Int32)

Возвращает значение заданного столбца в виде объекта SqlInt32.

GetSqlInt64(Int32)

Возвращает значение заданного столбца в виде объекта SqlInt64.

GetSqlMoney(Int32)

Возвращает значение заданного столбца в виде объекта SqlMoney.

GetSqlSingle(Int32)

Возвращает значение заданного столбца в виде объекта SqlSingle.

GetSqlString(Int32)

Возвращает значение заданного столбца в виде объекта SqlString.

GetSqlValue(Int32)

Возвращает значение данных в заданном столбце как тип SQL Server.

GetSqlValues(Object[])

Заполняет массив значений типа Object, содержащий значения для всех столбцов в записи, выраженные как типы SQL Server.

GetSqlXml(Int32)

Возвращает значение заданного столбца в виде XML.

GetStream(Int32)

Извлекает типы данных binary, image, varbinary, UDT и variant как Stream.

GetStream(Int32)

Возвращает поток для получения данных из указанного столбца.

(Унаследовано от DbDataReader)
GetString(Int32)

Возвращает значение заданного столбца в виде строки.

GetTextReader(Int32)

Извлекает типы данных Char, NChar, NText, NVarChar, text, varChar и Variant как TextReader.

GetTextReader(Int32)

Получает модуль чтения текста для извлечения данных из столбца.

(Унаследовано от DbDataReader)
GetTimeSpan(Int32)

Возвращает значение указанного столбца как объект TimeSpan.

GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
GetValue(Int32)

Возвращает значение заданного столбца в его исходном формате.

GetValues(Object[])

Заполняет массив объектов значениями столбцов текущей строки.

GetXmlReader(Int32)

Извлекает данные типа XML как XmlReader.

InitializeLifetimeService()
Устаревшие..

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
IsCommandBehavior(CommandBehavior)

Определяет, соответствует ли заданный CommandBehavior аналогичному объекту для SqlDataReader .

IsDBNull(Int32)

Получает значение, указывающее, содержит ли столбец несуществующие или пропущенные значения.

IsDBNullAsync(Int32)

Асинхронно получает значение, указывающее, содержит ли столбец несуществующие или пропущенные значения.

(Унаследовано от DbDataReader)
IsDBNullAsync(Int32, CancellationToken)

Асинхронная версия метода IsDBNull(Int32), который получает значение, указывающее, содержит ли столбец несуществующие или отсутствующие значения.

Токен отмены можно использовать для запроса отказа от операции до истечения времени ожидания команды. Сведения об исключениях передаются в возвращенном объекте Task.

IsDBNullAsync(Int32, CancellationToken)

Асинхронно получает значение, указывающее, содержит ли столбец несуществующие или пропущенные значения.

(Унаследовано от DbDataReader)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
MemberwiseClone(Boolean)

Создает неполную копию текущего объекта MarshalByRefObject.

(Унаследовано от MarshalByRefObject)
NextResult()

При чтении результатов пакетных SQL-транзакций перемещает средство чтения данных на следующий результат.

NextResultAsync()

Асинхронно перемещает модуль чтения данных к следующему результату при чтении результатов из пакета инструкций.

(Унаследовано от DbDataReader)
NextResultAsync(CancellationToken)

Асинхронная версия NextResult(), которая перемещает средство чтения данных к следующему результату при чтении результатов пакетных инструкций Transact-SQL.

Токен отмены можно использовать для запроса отказа от операции до истечения времени ожидания команды. Сведения об исключениях передаются в возвращенном объекте Task.

NextResultAsync(CancellationToken)

Асинхронно перемещает модуль чтения данных к следующему результату при чтении результатов из пакета инструкций.

(Унаследовано от DbDataReader)
Read()

Перемещает SqlDataReader к следующей записи.

ReadAsync()

Асинхронно перемещает модуль чтения к следующей записи в результирующем наборе.

(Унаследовано от DbDataReader)
ReadAsync(CancellationToken)

Асинхронная версия Read(), которая перемещает SqlDataReader к следующей записи.

Токен отмены можно использовать для запроса отказа от операции до истечения времени ожидания команды. Сведения об исключениях передаются в возвращенном объекте Task.

ReadAsync(CancellationToken)

Асинхронно перемещает модуль чтения к следующей записи в результирующем наборе.

(Унаследовано от DbDataReader)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

IDataReader.Close()

Описание этого члена см. в разделе Close().

(Унаследовано от DbDataReader)
IDataReader.GetSchemaTable()

Описание этого члена см. в разделе GetSchemaTable().

(Унаследовано от DbDataReader)
IDataRecord.GetData(Int32)

Возвращает IDataReader для указанного порядкового номера столбца.

IDataRecord.GetData(Int32)

Описание этого члена см. в разделе GetData(Int32).

(Унаследовано от DbDataReader)
IDisposable.Dispose()

Освобождает все ресурсы, используемые объектом чтения данных.

IEnumerable.GetEnumerator()

Возвращает перечислитель, который может использоваться для перемещения по коллекции элементов.

Методы расширения

CanGetColumnSchema(DbDataReader)

Получает значение, которое указывает, может ли DbDataReader получить схему столбца.

GetColumnSchema(DbDataReader)

Получает схему столбца (коллекцию DbColumn) для DbDataReader.

Cast<TResult>(IEnumerable)

Приводит элементы объекта IEnumerable к заданному типу.

OfType<TResult>(IEnumerable)

Выполняет фильтрацию элементов объекта IEnumerable по заданному типу.

AsParallel(IEnumerable)

Позволяет осуществлять параллельный запрос.

AsQueryable(IEnumerable)

Преобразовывает коллекцию IEnumerable в объект IQueryable.

Применяется к

См. также раздел