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


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 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
Наследование
SqlDataReader
Наследование
Наследование
SqlDataReader
Реализации

Примеры

В следующем примере создается , a SqlConnectionSqlCommandи a 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 позиция расширена, а другая операция чтения выполняется в предыдущем столбце.

Замечание

Для оптимальной производительности SqlDataReader избегайте создания ненужных объектов или создания ненужных копий данных. Таким образом, несколько вызовов методов, таких как GetValue возврат ссылки на один и тот же объект. Используйте осторожность, если вы изменяете базовое значение объектов, возвращаемых такими методами, как GetValue.

Свойства

Имя Описание
Connection

Возвращает связанный SqlConnection с ним SqlDataReaderобъект .

Depth

Возвращает значение, указывающее глубину вложения текущей строки.

FieldCount

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

HasRows

Возвращает значение, указывающее, содержит ли SqlDataReader одна или несколько строк.

IsClosed

Извлекает логическое значение, указывающее, закрыт ли указанный SqlDataReader экземпляр.

Item[Int32]

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

Item[String]

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

RecordsAffected

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

VisibleFieldCount

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

Методы

Имя Описание
Close()

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

CreateObjRef(Type)

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

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

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

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

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

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

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

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

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

GetByte(Int32)

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

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

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

GetChar(Int32)

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

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

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

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) — асинхронная версия этого метода.

GetFieldValueAsync<T>(Int32, CancellationToken)

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

GetFieldValueAsync<T>(Int32)

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

(Унаследовано от 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.

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)

Извлекает двоичные, образы, varbinary, UDT и вариантные типы данных в виде Stream.

GetString(Int32)

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

GetTextReader(Int32)

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

GetTimeSpan(Int32)

Извлекает значение указанного столбца в виде TimeSpan объекта.

GetType()

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

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

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

GetValues(Object[])

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

GetXmlReader(Int32)

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

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

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

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

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

IsDBNull(Int32)

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

IsDBNullAsync(Int32, CancellationToken)

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

Маркер отмены можно использовать для запроса на то, что операция будет прекращена до истечения времени ожидания команды. Исключения будут сообщаться с помощью возвращаемого объекта Task.

IsDBNullAsync(Int32)

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

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

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

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

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

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

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

NextResultAsync()

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

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

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

Маркер отмены можно использовать для запроса на то, что операция будет прекращена до истечения времени ожидания команды. Исключения будут сообщаться с помощью возвращаемого объекта Task.

Read()

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

ReadAsync()

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

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

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

Маркер отмены можно использовать для запроса на то, что операция будет прекращена до истечения времени ожидания команды. Исключения будут сообщаться с помощью возвращаемого объекта Task.

ToString()

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

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

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

Имя Описание
IDataReader.Close()

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

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

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

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

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

IDataRecord.GetData(Int32)

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

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

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

IEnumerable.GetEnumerator()

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

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

Имя Описание
AsParallel(IEnumerable)

Включает параллелизацию запроса.

AsQueryable(IEnumerable)

Преобразует IEnumerable в IQueryable.

CanGetColumnSchema(DbDataReader)

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

Cast<TResult>(IEnumerable)

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

GetColumnSchema(DbDataReader)

Возвращает схему столбца (DbColumnколлекцию) для .DbDataReader

OfType<TResult>(IEnumerable)

Фильтрует элементы IEnumerable на основе указанного типа.

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

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