SqlDataReaderとは? わかりやすく解説

SqlDataReader クラス

SQL Server データベースから行の前方向ストリームを読み取る方法を提供します。このクラスは継承できません。

名前空間: System.Data.SqlClient
アセンブリ: System.Data (system.data.dll 内)
構文構文

Public Class SqlDataReader
    Inherits DbDataReader
    Implements IDataReader, IDisposable, IDataRecord
Dim instance As SqlDataReader
public class SqlDataReader : DbDataReader,
 IDataReader, IDisposable, IDataRecord
public ref class SqlDataReader : public
 DbDataReader, IDataReader, IDisposable, IDataRecord
public class SqlDataReader extends DbDataReader
 implements IDataReader, IDisposable, 
    IDataRecord
public class SqlDataReader extends
 DbDataReader implements IDataReader, IDisposable, 
    IDataRecord
解説解説

SqlDataReader を作成するには、コンストラクタを直接使用せずに、SqlCommand オブジェクトの ExecuteReader メソッドを呼び出す必要があります。

SqlDataReader の使用中は、関連付けられた SqlConnection は、その SqlDataReader によって使用されるためビジー状態になります。この間、SqlConnection に対して、閉じる以外の操作は実行できません。SqlDataReader の Close メソッドを呼び出すまでこの状態が続きます。たとえば、Close を呼び出すまでは、出力パラメータは取得できません。

データの読み取り中に別のプロセスまたはスレッドが結果セットに加えた変更が、SqlDataReader のユーザーに表示されることがあります。ただし、実際に表示されるかどうかは、タイミングによって決まります。

SqlDataReader を閉じた後に呼び出すことができるのは、IsClosed プロパティと RecordsAffected プロパティだけです。RecordsAffected プロパティは、SqlDataReader が存在している間はいつでも呼び出すことできますが、正しい戻り値を得るために、RecordsAffected の値を取得する前には、必ず Close を呼び出してください。

メモメモ

パフォーマンスを向上するために、SqlDataReader は不要なオブジェクトまたは不要なデータのコピーを作成しません。そのため、GetValue などのメソッドを複数回呼び出すと、同じオブジェクトへの参照が返されます。GetValue などのメソッドから返されるオブジェクトの基の値を変更する場合は、注意してください。

使用例使用例

SqlConnection、SqlCommand、および SqlDataReader を作成する例を次に示します。この例では、データを読み取り、コンソール ウィンドウに出力します。次に、SqlDataReader を閉じます。SqlConnection は、using コード ブロックの末尾で自動的に閉じられます。

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()
            Console.WriteLine(String.Format("{0},
 {1}", _
                reader(0), reader(1)))
        End While

        ' Call Close when done reading.
        reader.Close()
    End Using
End Sub
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())
        {
            Console.WriteLine(String.Format("{0}, {1}",
                reader[0], reader[1]));
        }

        // Call Close when done reading.
        reader.Close();
    }
}
継承階層継承階層
System.Object
   System.MarshalByRefObject
     System.Data.Common.DbDataReader
      System.Data.SqlClient.SqlDataReader
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

SqlDataReader プロパティ


SqlDataReader メソッド


パブリック メソッドパブリック メソッド

( プロテクト メソッド も参照)
  名前 説明
パブリック メソッド Close オーバーライドされます。 SqlDataReader オブジェクトを閉じます。
パブリック メソッド CreateObjRef  リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド Dispose  オーバーロードされます。 DbDataReader によって使用されているリソースを解放します。 ( DbDataReader から継承されます。)
パブリック メソッド Equals  オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。)
パブリック メソッド GetBoolean オーバーライドされます。 指定した列の値をブール値として取得します。
パブリック メソッド GetByte オーバーライドされます。 指定した列の値をバイトとして取得します。
パブリック メソッド GetBytes オーバーライドされます。 指定した列オフセットからのバイト ストリームを、配列としてバッファに読み込みます。読み込みは、指定したバッファ オフセットから開始されます。
パブリック メソッド GetChar オーバーライドされます。 指定した列の値を単一の文字として取得します。
パブリック メソッド GetChars オーバーライドされます。 指定した列オフセットからの文字ストリームを、配列としてバッファに読み込みます。読み込みは、指定したバッファ オフセットから開始されます。
パブリック メソッド GetData  要求された列の序数の DbDataReader オブジェクトを返します。 ( DbDataReader から継承されます。)
パブリック メソッド GetDataTypeName オーバーライドされます。 ソース データ型名を取得します。
パブリック メソッド GetDateTime オーバーライドされます。 指定した列の値を DateTime オブジェクトとして取得します。
パブリック メソッド GetDecimal オーバーライドされます。 指定した列の値を Decimal オブジェクトとして取得します。
パブリック メソッド GetDouble オーバーライドされます。 指定した列の値を倍精度浮動小数点数として取得します。
パブリック メソッド GetEnumerator オーバーライドされます。 SqlDataReader を反復処理する IEnumerator を返します。
パブリック メソッド GetFieldType オーバーライドされます。 オブジェクトのデータ型である Type を取得します。
パブリック メソッド GetFloat オーバーライドされます。 指定した列の値を単精度浮動小数点数として取得します。
パブリック メソッド GetGuid オーバーライドされます。 指定した列の値をグローバル一意識別子 (GUID) として取得します。
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。)
パブリック メソッド GetInt16 オーバーライドされます。 指定した列の値を 16 ビット符号付き整数として取得します。
パブリック メソッド GetInt32 オーバーライドされます。 指定した列の値を 32 ビット符号付き整数として取得します。
パブリック メソッド GetInt64 オーバーライドされます。 指定した列の値を 64 ビット符号付き整数として取得します。
パブリック メソッド GetLifetimeService  対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド GetName オーバーライドされます。 指定した列の名前を取得します。
パブリック メソッド GetOrdinal オーバーライドされます。 列の名前を指定して、列の序数を取得します。
パブリック メソッド GetProviderSpecificFieldType オーバーライドされます。 基になるプロバイダ固有フィールド型の内部表現である Object を取得します。
パブリック メソッド GetProviderSpecificValue オーバーライドされます。 基になるプロバイダ固有の値の内部表現である Object を取得します。
パブリック メソッド GetProviderSpecificValues オーバーライドされます。 基になるプロバイダ固有の値の内部表現であるオブジェクトの配列を取得します。
パブリック メソッド GetSchemaTable オーバーライドされます。 SqlDataReader の列メタデータを記述する DataTable を返します。
パブリック メソッド GetSqlBinary 指定した列の値を SqlBinary として取得します。
パブリック メソッド GetSqlBoolean 指定した列の値を SqlBoolean として取得します。
パブリック メソッド GetSqlByte 指定した列の値を SqlByte として取得します。
パブリック メソッド GetSqlBytes 指定した列の値を SqlBytes として取得します。
パブリック メソッド GetSqlChars 指定した列の値を SqlChars として取得します。
パブリック メソッド GetSqlDateTime 指定した列の値を SqlDateTime として取得します。
パブリック メソッド GetSqlDecimal 指定した列の値を SqlDecimal として取得します。
パブリック メソッド GetSqlDouble 指定した列の値を SqlDouble として取得します。
パブリック メソッド GetSqlGuid 指定した列の値を SqlGuid として取得します。
パブリック メソッド GetSqlInt16 指定した列の値を SqlInt16 として取得します。
パブリック メソッド GetSqlInt32 指定した列の値を SqlInt32 として取得します。
パブリック メソッド GetSqlInt64 指定した列の値を SqlInt64 として取得します。
パブリック メソッド GetSqlMoney 指定した列の値を SqlMoney として取得します。
パブリック メソッド GetSqlSingle 指定した列の値を SqlSingle として取得します。
パブリック メソッド GetSqlString 指定した列の値を SqlString として取得します。
パブリック メソッド GetSqlValue 基になる SqlDbType Variant の内部表現である Object を取得します。
パブリック メソッド GetSqlValues 現在の行のすべての属性列を取得します。
パブリック メソッド GetSqlXml 指定した列の値を XML 値として取得します。
パブリック メソッド GetString オーバーライドされます。 指定した列の値を文字列として取得します。
パブリック メソッド GetType  現在のインスタンスの Type を取得します。 ( Object から継承されます。)
パブリック メソッド GetValue オーバーライドされます。 指定した列の値をネイティブ形式で取得します。
パブリック メソッド GetValues オーバーライドされます。 現在の行のコレクション内にあるすべての属性列を取得します。
パブリック メソッド InitializeLifetimeService  対象のインスタンスの有効期間ポリシーを制御する、有効期間サービス オブジェクトを取得します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド IsDBNull オーバーライドされます。 列に格納されている値が存在しない値または欠損値かどうかを示す値を取得します。
パブリック メソッド NextResult オーバーライドされます。 バッチ Transact-SQL ステートメントの結果を読み込むときに、データ リーダーを次の結果に進めます。
パブリック メソッド Read オーバーライドされます。 SqlDataReader を次のレコードに進めます。
パブリック メソッド ReferenceEquals  指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。)
パブリック メソッド ToString  現在の Object を表す String を返します。 ( Object から継承されます。)
プロテクト メソッドプロテクト メソッド
  名前 説明
プロテクト メソッド Dispose  オーバーロードされます。 DbDataReader によって使用されているリソースを解放します。 ( DbDataReader から継承されます。)
プロテクト メソッド Finalize  Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。)
プロテクト メソッド GetDbDataReader  プロバイダ固有の実装でオーバーライドできる、要求された列の序数の DbDataReader オブジェクトを返します。 ( DbDataReader から継承されます。)
プロテクト メソッド IsCommandBehavior 指定した CommandBehavior が SqlDataReader の動作と一致するかどうかを判断します。
プロテクト メソッド MemberwiseClone  オーバーロードされます。 ( MarshalByRefObject から継承されます。)
明示的インターフェイスの実装明示的インターフェイスの実装
  名前 説明
インターフェイスの明示的な実装 .NET Compact Framework によるサポート System.Data.IDataRecord.GetData このメンバの説明については、GetData のトピックを参照してください。
インターフェイスの明示的な実装 System.IDisposable.Dispose  
参照参照

関連項目

SqlDataReader クラス
System.Data.SqlClient 名前空間

その他の技術情報

ADO.NET でのデータへの接続およびデータの取得
.NET Framework Data Provider for SQL Server の使用

SqlDataReader メンバ

SQL Server データベースから行の前方向ストリームを読み取る方法を提供します。このクラスは継承できません。

SqlDataReader データ型で公開されるメンバを以下の表に示します。


パブリック プロパティパブリック プロパティ
プロテクト プロパティプロテクト プロパティ
  名前 説明
プロテクト プロパティ Connection SqlDataReader に関連付けられている SqlConnection を取得します。
パブリック メソッドパブリック メソッド
( プロテクト メソッド も参照)
  名前 説明
パブリック メソッド Close オーバーライドされます。 SqlDataReader オブジェクトを閉じます。
パブリック メソッド CreateObjRef  リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 (MarshalByRefObject から継承されます。)
パブリック メソッド Dispose  オーバーロードされます。 DbDataReader によって使用されているリソースを解放します。 (DbDataReader から継承されます。)
パブリック メソッド Equals  オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。)
パブリック メソッド GetBoolean オーバーライドされます。 指定した列の値をブール値として取得します。
パブリック メソッド GetByte オーバーライドされます。 指定した列の値をバイトとして取得します。
パブリック メソッド GetBytes オーバーライドされます。 指定した列オフセットからのバイト ストリームを、配列としてバッファに読み込みます。読み込みは、指定したバッファ オフセットから開始されます。
パブリック メソッド GetChar オーバーライドされます。 指定した列の値を単一の文字として取得します。
パブリック メソッド GetChars オーバーライドされます。 指定した列オフセットからの文字ストリームを、配列としてバッファに読み込みます。読み込みは、指定したバッファ オフセットから開始されます。
パブリック メソッド GetData  要求された列の序数の DbDataReader オブジェクトを返します。 (DbDataReader から継承されます。)
パブリック メソッド GetDataTypeName オーバーライドされます。 ソース データ型名を取得します。
パブリック メソッド GetDateTime オーバーライドされます。 指定した列の値を DateTime オブジェクトとして取得します。
パブリック メソッド GetDecimal オーバーライドされます。 指定した列の値を Decimal オブジェクトとして取得します。
パブリック メソッド GetDouble オーバーライドされます。 指定した列の値を倍精度浮動小数点数として取得します。
パブリック メソッド GetEnumerator オーバーライドされます。 SqlDataReader を反復処理する IEnumerator を返します。
パブリック メソッド GetFieldType オーバーライドされます。 オブジェクトのデータ型である Type を取得します。
パブリック メソッド GetFloat オーバーライドされます。 指定した列の値を単精度浮動小数点数として取得します。
パブリック メソッド GetGuid オーバーライドされます。 指定した列の値をグローバル一意識別子 (GUID) として取得します。
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。)
パブリック メソッド GetInt16 オーバーライドされます。 指定した列の値を 16 ビット符号付き整数として取得します。
パブリック メソッド GetInt32 オーバーライドされます。 指定した列の値を 32 ビット符号付き整数として取得します。
パブリック メソッド GetInt64 オーバーライドされます。 指定した列の値を 64 ビット符号付き整数として取得します。
パブリック メソッド GetLifetimeService  対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。 (MarshalByRefObject から継承されます。)
パブリック メソッド GetName オーバーライドされます。 指定した列の名前を取得します。
パブリック メソッド GetOrdinal オーバーライドされます。 列の名前を指定して、列の序数を取得します。
パブリック メソッド GetProviderSpecificFieldType オーバーライドされます。 基になるプロバイダ固有フィールド型の内部表現である Object を取得します。
パブリック メソッド GetProviderSpecificValue オーバーライドされます。 基になるプロバイダ固有の値の内部表現である Object を取得します。
パブリック メソッド GetProviderSpecificValues オーバーライドされます。 基になるプロバイダ固有の値の内部表現であるオブジェクトの配列を取得します。
パブリック メソッド GetSchemaTable オーバーライドされます。 SqlDataReader の列メタデータを記述する DataTable を返します。
パブリック メソッド GetSqlBinary 指定した列の値を SqlBinary として取得します。
パブリック メソッド GetSqlBoolean 指定した列の値を SqlBoolean として取得します。
パブリック メソッド GetSqlByte 指定した列の値を SqlByte として取得します。
パブリック メソッド GetSqlBytes 指定した列の値を SqlBytes として取得します。
パブリック メソッド GetSqlChars 指定した列の値を SqlChars として取得します。
パブリック メソッド GetSqlDateTime 指定した列の値を SqlDateTime として取得します。
パブリック メソッド GetSqlDecimal 指定した列の値を SqlDecimal として取得します。
パブリック メソッド GetSqlDouble 指定した列の値を SqlDouble として取得します。
パブリック メソッド GetSqlGuid 指定した列の値を SqlGuid として取得します。
パブリック メソッド GetSqlInt16 指定した列の値を SqlInt16 として取得します。
パブリック メソッド GetSqlInt32 指定した列の値を SqlInt32 として取得します。
パブリック メソッド GetSqlInt64 指定した列の値を SqlInt64 として取得します。
パブリック メソッド GetSqlMoney 指定した列の値を SqlMoney として取得します。
パブリック メソッド GetSqlSingle 指定した列の値を SqlSingle として取得します。
パブリック メソッド GetSqlString 指定した列の値を SqlString として取得します。
パブリック メソッド GetSqlValue 基になる SqlDbType Variant の内部表現である Object を取得します。
パブリック メソッド GetSqlValues 現在の行のすべての属性列を取得します。
パブリック メソッド GetSqlXml 指定した列の値を XML 値として取得します。
パブリック メソッド GetString オーバーライドされます。 指定した列の値を文字列として取得します。
パブリック メソッド GetType  現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッド GetValue オーバーライドされます。 指定した列の値をネイティブ形式で取得します。
パブリック メソッド GetValues オーバーライドされます。 現在の行のコレクション内にあるすべての属性列を取得します。
パブリック メソッド InitializeLifetimeService  対象のインスタンスの有効期間ポリシーを制御する、有効期間サービス オブジェクトを取得します。 (MarshalByRefObject から継承されます。)
パブリック メソッド IsDBNull オーバーライドされます。 列に格納されている値が存在しない値または欠損値かどうかを示す値を取得します。
パブリック メソッド NextResult オーバーライドされます。 バッチ Transact-SQL ステートメントの結果を読み込むときに、データ リーダーを次の結果に進めます。
パブリック メソッド Read オーバーライドされます。 SqlDataReader を次のレコードに進めます。
パブリック メソッド ReferenceEquals  指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。)
パブリック メソッド ToString  現在の Object を表す String を返します。 (Object から継承されます。)
プロテクト メソッドプロテクト メソッド
明示的インターフェイスの実装明示的インターフェイスの実装
  名前 説明
インターフェイスの明示的な実装 .NET Compact Framework によるサポート System.Data.IDataRecord.GetData このメンバの説明については、GetData のトピックを参照してください。
インターフェイスの明示的な実装 System.IDisposable.Dispose  
参照参照

関連項目

SqlDataReader クラス
System.Data.SqlClient 名前空間

その他の技術情報

ADO.NET でのデータへの接続およびデータの取得
.NET Framework Data Provider for SQL Server の使用



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「SqlDataReader」の関連用語

SqlDataReaderのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



SqlDataReaderのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS