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
実装

次の例では、SqlConnectionSqlCommand、および 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. SqlConnectionusing コードブロックの最後に自動的に閉じられます。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を作成するには、コンストラクターを直接使用するのではなく、SqlCommand オブジェクトの ExecuteReader メソッドを呼び出す必要があります。To create a SqlDataReader, you must call the ExecuteReader method of the SqlCommand object, instead of directly using a constructor.

SqlDataReader が使用されている間、関連付けられている SqlConnectionSqlDataReaderを提供していますが、それを閉じる以外の操作を 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. これは、SqlDataReaderClose メソッドが呼び出されるまでのケースです。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.

SqlDataReader を閉じた後に呼び出すことができるプロパティは、IsClosedRecordsAffected だけです。IsClosed and RecordsAffected are the only properties that you can call after the SqlDataReader is closed. SqlDataReader が存在する間は RecordsAffected プロパティにアクセスできますが、正確な戻り値を保証するために RecordsAffected の値を返す前に必ず Close を呼び出してください。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) を使用する場合、SqlDataReader の位置が高度であり、前の列で別の読み取り操作が試行されると、InvalidOperationException が発生します。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 に 1 行以上の行が格納されているかどうかを示す値を取得します。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

Transact-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.

CloseAsync()

DbDataReader オブジェクトを非同期に閉じます。Asynchronously closes the DbDataReader object.

(継承元 DbDataReader)
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()

DbDataReader クラスの現在のインスタンスによって使用されているすべてのリソースを解放します。Releases all resources used by the current instance of the DbDataReader class.

(継承元 DbDataReader)
Dispose(Boolean)

DbDataReader によって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。Releases the unmanaged resources used by the DbDataReader and optionally releases the managed resources.

(継承元 DbDataReader)
DisposeAsync()

DbDataReader クラスの現在のインスタンスによって使用されているすべてのリソースを非同期で解放します。Asynchronously releases all resources used by the current instance of the DbDataReader class.

(継承元 DbDataReader)
Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判定します。Determines whether the specified object is equal to the current object.

(継承元 Object)
GetBoolean(Int32)

指定された列の値を Boolean として取得します。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.

GetDbDataReader(Int32)

プロバイダー固有の実装でオーバーライドできる、要求された列序数に対応した DbDataReader オブジェクトを返します。Returns a DbDataReader object for the requested column ordinal that can be overridden with a provider-specific implementation.

(継承元 DbDataReader)
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)

要求された型として指定された列の値を非同期で取得します。Asynchronously gets the value of the specified column as the requested type.

(継承元 DbDataReader)
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[])

レコードを構成するすべての列について、SQL Server のデータ型で表現されている値を含む Object の配列に格納します。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)

バイナリ、イメージ、varbinary、UDT およびバリアント データ型を 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、テキスト、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)

XmlReaderとして XML 型のデータを取得します。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)

指定した CommandBehaviorSqlDataReader の動作と一致するかどうかを判断します。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)

列に格納されている値が存在しない値または欠損値かどうかを示す値を非同期で取得します。Asynchronously gets a value that indicates whether the column contains non-existent or missing values.

(継承元 DbDataReader)
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. 例外は、返されたタスク オブジェクトによって報告されます。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()

バッチ Transact-SQL ステートメントの結果を読み込むときに、データ リーダーを次の結果に進めます。Advances the data reader to the next result, when reading the results of batch Transact-SQL statements.

NextResultAsync()

バッチ ステートメントの結果を読み取っているときに、次の結果にリーダーを非同期で進めます。Asynchronously advances the reader to the next result when reading the results of a batch of statements.

(継承元 DbDataReader)
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. 例外は、返されたタスク オブジェクトによって報告されます。Exceptions will be reported via the returned Task object.

Read()

SqlDataReader を次のレコードに進めます。Advances the SqlDataReader to the next record.

ReadAsync()

結果セット内の次のレコードにリーダーを非同期で進めます。Asynchronously advances the reader to the next record in a result set.

(継承元 DbDataReader)
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. 例外は、返されたタスク オブジェクトによって報告されます。Exceptions will be reported via the returned Task object.

ToString()

現在のオブジェクトを表す string を返します。Returns a string that represents the current object.

(継承元 Object)

明示的なインターフェイスの実装

IDataReader.Close()

このメンバーの詳細については、「Close()」をご覧ください。For a description of this member, see Close().

(継承元 DbDataReader)
IDataReader.GetSchemaTable()

このメンバーの詳細については、「GetSchemaTable()」をご覧ください。For a description of this member, see GetSchemaTable().

(継承元 DbDataReader)
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.

拡張メソッド

CanGetColumnSchema(DbDataReader)

DbDataReader が列スキーマを取得できるかどうかを示す値を取得します。Gets a value that indicates whether a DbDataReader can get a column schema.

GetColumnSchema(DbDataReader)

DbColumn 用に、列のスキーマ (DbDataReader コレクション) を取得します。Gets the column schema (DbColumn collection) for a DbDataReader.

Cast<TResult>(IEnumerable)

IEnumerable の要素を、指定した型にキャストします。Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

指定された型に基づいて IEnumerable の要素をフィルター処理します。Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

クエリの並列化を有効にします。Enables parallelization of a query.

AsQueryable(IEnumerable)

IEnumerableIQueryable に変換します。Converts an IEnumerable to an IQueryable.

適用対象

こちらもご覧ください