Язык

SqlDataReader Класс

Определение

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

Note

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

Свойства

Имя. Описание
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.

Методы

Имя. Описание
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)

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)

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

Для новой разработки используйте Microsoft. Data.SqlClient. На этой странице приведены документы System.Data.SqlClient.

GetProviderSpecificValue(Int32)

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

Для новой разработки используйте Microsoft. Data.SqlClient. На этой странице приведены документы System.Data.SqlClient.

GetProviderSpecificValues(Object[])

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

Для новой разработки используйте Microsoft. Data.SqlClient. На этой странице приведены документы System.Data.SqlClient.

GetSchemaTable()

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

Для новой разработки используйте 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)

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

Для новой разработки используйте Microsoft. Data.SqlClient. На этой странице приведены документы System.Data.SqlClient.

GetString(Int32)

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

Для новой разработки используйте Microsoft. Data.SqlClient. На этой странице приведены документы System.Data.SqlClient.

GetTextReader(Int32)

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

Для новой разработки используйте 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), которая получает значение, указывающее, содержит ли столбец несуществующие или отсутствующие значения.

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

Для новой разработки используйте 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.

      The cancellation token can be used to request that the operation be abandoned before the command timeout elapses. Exceptions will be reported via the returned Task object.

      <p>For new development, use <a href="/sql/connect/ado-net/introduction-microsoft-data-sqlclient-namespace">Microsoft.Data.SqlClient</a>. This page documents System.Data.SqlClient.</p>
Read()

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

Для новой разработки используйте Microsoft. Data.SqlClient. На этой странице приведены документы System.Data.SqlClient.

ReadAsync()

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

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

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

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

Для новой разработки используйте Microsoft. Data.SqlClient. На этой странице приведены документы System.Data.SqlClient.

ToString()

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

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

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

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

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

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

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

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

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.

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

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

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

AsQueryable(IEnumerable)

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

CanGetColumnSchema(DbDataReader)

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

Cast<TResult>(IEnumerable)

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

GetColumnSchema(DbDataReader)

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

OfType<TResult>(IEnumerable)

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

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

См. также