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
- Наследование
- Наследование
- Наследование
- Реализации
Примеры
В следующем примере создаются 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).
Поставщики должны выполнить переопределение с помощью соответствующей реализации.
При необходимости можно учитывать |
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) |
Возвращает |
GetProviderSpecificValue(Int32) |
Возвращает |
GetProviderSpecificValues(Object[]) |
Возвращает массив объектов, которые представляют собой значения типа, специфического для базового поставщика. |
GetSchemaTable() |
Возвращает объект DataTable, описывающий метаданные столбцов модуля чтения данных SqlDataReader. |
GetSchemaTable() |
Возвращает объект DataTable, описывающий метаданные столбцов модуля чтения данных DbDataReader.
Возвращает |
GetSchemaTableAsync(CancellationToken) |
Это асинхронная версия метода GetSchemaTable().
Поставщики должны выполнить переопределение с помощью соответствующей реализации.
При необходимости можно учитывать |
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. |