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


SqlDataReader Класс

Определение

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

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

Примеры

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

using Microsoft.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]));
    }

}

Комментарии

Чтобы создать 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-транзакций.

SensitivityClassification

Возвращает сведения с SensitivityClassification помощью SqlDataReader.

VisibleFieldCount

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

Методы

Close()

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

Dispose(Boolean)

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

GetBoolean(Int32)

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

GetByte(Int32)

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

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

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

GetChar(Int32)

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

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

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

GetColumnSchema()

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

GetDataTypeName(Int32)

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

GetDateTime(Int32)

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

GetDateTimeOffset(Int32)

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

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

GetFloat(Int32)

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

GetGuid(Int32)

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

GetInt16(Int32)

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

GetInt32(Int32)

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

GetInt64(Int32)

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

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)

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

GetString(Int32)

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

GetTextReader(Int32)

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

GetTimeSpan(Int32)

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

GetValue(Int32)

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

GetValues(Object[])

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

GetXmlReader(Int32)

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

IsCommandBehavior(CommandBehavior)

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

IsDBNull(Int32)

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

IsDBNullAsync(Int32, CancellationToken)

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

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

NextResult()

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

NextResultAsync(CancellationToken)

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

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

Read()

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

ReadAsync(CancellationToken)

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

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

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

IDataRecord.GetData(Int32)

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

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