SqlDataReader Класс

Определение

Предоставляет способ чтения потока строк последовательного доступа из базы данных SQL Server.Provides a way of reading a forward-only stream of rows from a SQL Server database. Этот класс не наследуется.This class cannot be inherited.

public ref class SqlDataReader : System::Data::Common::DbDataReader, IDisposable
public class SqlDataReader : System.Data.Common.DbDataReader, IDisposable
type SqlDataReader = class
    inherit DbDataReader
    interface IDataReader
    interface IDisposable
    interface IDataRecord
Public Class SqlDataReader
Inherits DbDataReader
Implements IDisposable
Наследование
SqlDataReader
Реализации

Примеры

В следующем примере создается SqlConnection, SqlCommandи SqlDataReader.The following example creates a SqlConnection, a SqlCommand, and a SqlDataReader. Пример считывает данные, записывая их в окно консоли.The example reads through the data, writing it out to the console window. Затем код закрывает SqlDataReader.The code then closes the SqlDataReader. SqlConnection автоматически закрывается в конце блока кода using.The SqlConnection is closed automatically at the end of the using code block.

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 record)
    {
        Console.WriteLine(String.Format("{0}, {1}", record[0], record[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, вместо того чтобы напрямую использовать конструктор.To create a SqlDataReader, you must call the ExecuteReader method of the SqlCommand object, instead of directly using a constructor.

Во время использования SqlDataReader связанная SqlConnection занята обслуживанием SqlDataReader, и другие операции с SqlConnection, кроме закрытия этого, не могут быть выполнены.While the SqlDataReader is being used, the associated SqlConnection is busy serving the SqlDataReader, and no other operations can be performed on the SqlConnection other than closing it. Это происходит до тех пор, пока не будет вызван метод Close SqlDataReader.This is the case until the Close method of the SqlDataReader is called. Например, нельзя получить выходные параметры до тех пор, пока не будет вызвана Close.For example, you cannot retrieve output parameters until after you call Close.

Изменения, внесенные в результирующий набор другим процессом или потоком во время чтения данных, могут быть видимы пользователю SqlDataReader.Changes made to a result set by another process or thread while data is being read may be visible to the user of the SqlDataReader. Однако точное поведение зависит от времени.However, the precise behavior is timing dependent.

IsClosed и RecordsAffected являются единственными свойствами, которые можно вызывать после закрытия SqlDataReader.IsClosed and RecordsAffected are the only properties that you can call after the SqlDataReader is closed. Хотя доступ к свойству RecordsAffected можно получить, пока SqlDataReader существует, всегда вызывайте Close перед возвратом значения RecordsAffected, чтобы гарантировать точное возвращаемое значение.Although the RecordsAffected property may be accessed while the SqlDataReader exists, always call Close before returning the value of RecordsAffected to guarantee an accurate return value.

При использовании последовательного доступа (CommandBehavior.SequentialAccess) будет вызвано InvalidOperationException, если SqlDataReaderное расположение является дополнительным и попытка выполнить другую операцию чтения в предыдущем столбце.When using sequential access (CommandBehavior.SequentialAccess), an InvalidOperationException will be raised if the SqlDataReader position is advanced and another read operation is attempted on the previous column.

Примечание

Для оптимальной производительности SqlDataReader избежать создания ненужных объектов или создания ненужных копий данных.For optimal performance, SqlDataReader avoids creating unnecessary objects or making unnecessary copies of data. Таким образом, несколько вызовов таких методов, как GetValue, возвращают ссылку на один и тот же объект.Therefore, multiple calls to methods such as GetValue return a reference to the same object. Будьте внимательны при изменении базового значения объектов, возвращаемых такими методами, как GetValue.Use caution if you are modifying the underlying value of the objects returned by methods such as GetValue.

Свойства

Connection

Возвращает ключ SqlConnection, ассоциированный с экземпляром SqlDataReader.Gets the SqlConnection associated with the SqlDataReader.

Depth

Возвращает значение, указывающее глубину вложенности для текущей строки.Gets a value that indicates the depth of nesting for the current row.

FieldCount

Возвращает число столбцов в текущей строке.Gets the number of columns in the current row.

HasRows

Получает значение, указывающее, содержит ли объект SqlDataReader одну или несколько строк.Gets a value that indicates whether the SqlDataReader contains one or more rows.

IsClosed

Извлекает логическое значение, указывающее, закрыт ли заданный экземпляр SqlDataReader.Retrieves a Boolean value that indicates whether the specified SqlDataReader instance has been closed.

Item[Int32]

Возвращает значение указанного столбца в собственном формате при наличии заданного порядкового номера столбца.Gets the value of the specified column in its native format given the column ordinal.

Item[String]

Возвращает значение заданного столбца в собственном формате при наличии заданного имени столбца.Gets the value of the specified column in its native format given the column name.

RecordsAffected

Возвращает число измененных, вставленных или удаленных строк при выполнении SQL-транзакций.Gets the number of rows changed, inserted, or deleted by execution of the Transact-SQL statement.

VisibleFieldCount

Возвращает число не скрытых полей в SqlDataReader.Gets the number of fields in the SqlDataReader that are not hidden.

Методы

Close()

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

CreateObjRef(Type)

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

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

Освобождает неуправляемые ресурсы, используемые объектом SqlDataReader, а при необходимости освобождает также управляемые ресурсы.Releases the unmanaged resources used by the SqlDataReader and optionally releases the managed resources.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

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

Возвращает значение указанного столбца в виде логического значения.Gets the value of the specified column as a Boolean.

GetByte(Int32)

Возвращает значение указанного столбца в виде байта.Gets the value of the specified column as a byte.

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

Считывает поток байтов из заданного смещения столбца в буфер в виде массива, начиная с заданного смещения буфера.Reads a stream of bytes from the specified column offset into the buffer an array starting at the given buffer offset.

GetChar(Int32)

Возвращает значение указанного столбца в виде одного символа.Gets the value of the specified column as a single character.

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

Считывает поток символов из заданного смещения столбца в буфер в виде массива, начиная с заданного смещения буфера.Reads a stream of characters from the specified column offset into the buffer as an array starting at the given buffer offset.

GetColumnSchema()

Получает коллекцию схемы столбца только для чтения.Gets the read-only column schema collection.

GetData(Int32)

Возвращает IDataReader для указанного порядкового номера столбца.Returns an IDataReader for the specified column ordinal.

GetDataTypeName(Int32)

Получает строку, представляющую тип данных в указанном столбце.Gets a string representing the data type of the specified column.

GetDateTime(Int32)

Возвращает значение указанного столбца в виде объекта DateTime.Gets the value of the specified column as a DateTime object.

GetDateTimeOffset(Int32)

Возвращает значение указанного столбца как объект DateTimeOffset.Retrieves the value of the specified column as a DateTimeOffset object.

GetDecimal(Int32)

Возвращает значение указанного столбца в виде объекта Decimal.Gets the value of the specified column as a Decimal object.

GetDouble(Int32)

Возвращает значение заданного столбца в виде числа с плавающей запятой двойной точности.Gets the value of the specified column as a double-precision floating point number.

GetEnumerator()

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

GetFieldType(Int32)

Возвращает тип Type, который является типом данных объекта.Gets the Type that is the data type of the object.

GetFieldValue<T>(Int32)

Синхронно получает значение заданного столбца в виде типа.Synchronously gets the value of the specified column as a type. GetFieldValueAsync<T>(Int32, CancellationToken) — асинхронная версия этого метода.GetFieldValueAsync<T>(Int32, CancellationToken) is the asynchronous version of this method.

GetFieldValueAsync<T>(Int32, CancellationToken)

Асинхронно получает значение заданного столбца в виде типа.Asynchronously gets the value of the specified column as a type. GetFieldValue<T>(Int32) — синхронная версия этого метода.GetFieldValue<T>(Int32) is the synchronous version of this method.

GetFloat(Int32)

Возвращает значение заданного столбца в виде числа с плавающей запятой одинарной точности.Gets the value of the specified column as a single-precision floating point number.

GetGuid(Int32)

Возвращает значение заданного столбца в виде глобального уникального идентификатора (GUID).Gets the value of the specified column as a globally unique identifier (GUID).

GetHashCode()

Служит в качестве хэш-функции по умолчанию.Serves as the default hash function.

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

Получает значение заданного столбца в виде 16-битового целого числа со знаком.Gets the value of the specified column as a 16-bit signed integer.

GetInt32(Int32)

Возвращает значение указанного столбца в виде 32-разрядного целого числа со знаком.Gets the value of the specified column as a 32-bit signed integer.

GetInt64(Int32)

Возвращает значение указанного столбца в виде 64-разрядного целого числа со знаком.Gets the value of the specified column as a 64-bit signed integer.

GetLifetimeService()

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

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

Возвращает имя заданного столбца.Gets the name of the specified column.

GetOrdinal(String)

Возвращает порядковый номер столбца при наличии заданного имени столбца.Gets the column ordinal, given the name of the column.

GetProviderSpecificFieldType(Int32)

Возвращает Object, который представляет собой конкретный тип поля базового поставщика.Gets an Object that is a representation of the underlying provider-specific field type.

GetProviderSpecificValue(Int32)

Возвращает Object, который представляет собой значение типа, специфического для поставщика.Gets an Object that is a representation of the underlying provider specific value.

GetProviderSpecificValues(Object[])

Возвращает массив объектов, которые представляют собой значения типа, специфического для базового поставщика.Gets an array of objects that are a representation of the underlying provider specific values.

GetSchemaTable()

Возвращает объект DataTable, описывающий метаданные столбцов модуля чтения данных SqlDataReader.Returns a DataTable that describes the column metadata of the SqlDataReader.

GetSqlBinary(Int32)

Возвращает значение заданного столбца в виде объекта SqlBinary.Gets the value of the specified column as a SqlBinary.

GetSqlBoolean(Int32)

Возвращает значение заданного столбца в виде объекта SqlBoolean.Gets the value of the specified column as a SqlBoolean.

GetSqlByte(Int32)

Возвращает значение заданного столбца в виде объекта SqlByte.Gets the value of the specified column as a SqlByte.

GetSqlBytes(Int32)

Возвращает значение заданного столбца в виде объекта SqlBytes.Gets the value of the specified column as SqlBytes.

GetSqlChars(Int32)

Возвращает значение заданного столбца в виде объекта SqlChars.Gets the value of the specified column as SqlChars.

GetSqlDateTime(Int32)

Возвращает значение заданного столбца в виде объекта SqlDateTime.Gets the value of the specified column as a SqlDateTime.

GetSqlDecimal(Int32)

Возвращает значение заданного столбца в виде объекта SqlDecimal.Gets the value of the specified column as a SqlDecimal.

GetSqlDouble(Int32)

Возвращает значение заданного столбца в виде объекта SqlDouble.Gets the value of the specified column as a SqlDouble.

GetSqlGuid(Int32)

Возвращает значение заданного столбца в виде объекта SqlGuid.Gets the value of the specified column as a SqlGuid.

GetSqlInt16(Int32)

Возвращает значение заданного столбца в виде объекта SqlInt16.Gets the value of the specified column as a SqlInt16.

GetSqlInt32(Int32)

Возвращает значение заданного столбца в виде объекта SqlInt32.Gets the value of the specified column as a SqlInt32.

GetSqlInt64(Int32)

Возвращает значение заданного столбца в виде объекта SqlInt64.Gets the value of the specified column as a SqlInt64.

GetSqlMoney(Int32)

Возвращает значение заданного столбца в виде объекта SqlMoney.Gets the value of the specified column as a SqlMoney.

GetSqlSingle(Int32)

Возвращает значение заданного столбца в виде объекта SqlSingle.Gets the value of the specified column as a SqlSingle.

GetSqlString(Int32)

Возвращает значение заданного столбца в виде объекта SqlString.Gets the value of the specified column as a SqlString.

GetSqlValue(Int32)

Возвращает значение данных в заданном столбце как тип SQL Server.Returns the data value in the specified column as a SQL Server type.

GetSqlValues(Object[])

Заполняет массив значений типа Object, содержащий значения для всех столбцов в записи, выраженные как типы SQL Server.Fills an array of Object that contains the values for all the columns in the record, expressed as SQL Server types.

GetSqlXml(Int32)

Возвращает значение заданного столбца в виде XML.Gets the value of the specified column as an XML value.

GetStream(Int32)

Извлекает типы данных binary, image, varbinary, UDT и variant как Stream.Retrieves binary, image, varbinary, UDT, and variant data types as a Stream.

GetString(Int32)

Возвращает значение заданного столбца в виде строки.Gets the value of the specified column as a string.

GetTextReader(Int32)

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

GetTimeSpan(Int32)

Возвращает значение указанного столбца как объект TimeSpan.Retrieves the value of the specified column as a TimeSpan object.

GetType()

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

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

Возвращает значение заданного столбца в его исходном формате.Gets the value of the specified column in its native format.

GetValues(Object[])

Заполняет массив объектов значениями столбцов текущей строки.Populates an array of objects with the column values of the current row.

GetXmlReader(Int32)

Извлекает данные типа XML как XmlReader.Retrieves data of type XML as an XmlReader.

InitializeLifetimeService()

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.Obtains a lifetime service object to control the lifetime policy for this instance.

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

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

IsDBNull(Int32)

Получает значение, указывающее, содержит ли столбец несуществующие или пропущенные значения.Gets a value that indicates whether the column contains non-existent or missing values.

IsDBNullAsync(Int32, CancellationToken)

Асинхронная версия метода IsDBNull(Int32), который получает значение, указывающее, содержит ли столбец несуществующие или отсутствующие значения.An asynchronous version of IsDBNull(Int32), which gets a value that indicates whether the column contains non-existent or missing values.

Токен отмены можно использовать для запроса отказа от операции до истечения времени ожидания команды.The cancellation token can be used to request that the operation be abandoned before the command timeout elapses. Сведения об исключениях передаются в возвращенном объекте Task.Exceptions will be reported via the returned Task object.

MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

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

Создает неполную копию текущего объекта MarshalByRefObject.Creates a shallow copy of the current MarshalByRefObject object.

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

При чтении результатов пакетных SQL-транзакций перемещает средство чтения данных на следующий результат.Advances the data reader to the next result, when reading the results of batch Transact-SQL statements.

NextResultAsync(CancellationToken)

Асинхронная версия метода NextResult(), который перемещает средство чтения данных к следующему результату при чтении результатов из пакета инструкций Transact-SQLTransact-SQL.An asynchronous version of NextResult(), which advances the data reader to the next result, when reading the results of batch Transact-SQLTransact-SQL statements.

Токен отмены можно использовать для запроса отказа от операции до истечения времени ожидания команды.The cancellation token can be used to request that the operation be abandoned before the command timeout elapses. Сведения об исключениях передаются в возвращенном объекте Task.Exceptions will be reported via the returned Task object.

Read()

Перемещает SqlDataReader к следующей записи.Advances the SqlDataReader to the next record.

ReadAsync(CancellationToken)

Асинхронная версия Read(), которая перемещает SqlDataReader к следующей записи.An asynchronous version of Read(), which advances the SqlDataReader to the next record.

Токен отмены можно использовать для запроса отказа от операции до истечения времени ожидания команды.The cancellation token can be used to request that the operation be abandoned before the command timeout elapses. Сведения об исключениях передаются в возвращенном объекте Task.Exceptions will be reported via the returned Task object.

ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

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

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

IDataRecord.GetData(Int32)

Возвращает IDataReader для указанного порядкового номера столбца.Returns an IDataReader for the specified column ordinal.

IDisposable.Dispose()

Освобождает все ресурсы, используемые объектом чтения данных.Releases all resources that are used by the data reader.

IEnumerable.GetEnumerator()

Возвращает перечислитель, который может использоваться для перемещения по коллекции элементов.Returns an enumerator that can be used to iterate through the item collection.

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

Дополнительно