IDataRecord インターフェイス
アセンブリ: System.Data (system.data.dll 内)


IDataReader インターフェイスと IDataRecord インターフェイスを使用することで、継承クラスで DataReader クラスを実装できます。これにより、結果セットの前方向のストリームを 1 つ以上読み取ることができます。DataReader クラスの詳細については、「DataReader によるデータの取得」を参照してください。.NET Framework データ プロバイダの実装方法の詳細については、「Implementing a .NET Framework Data Provider」を参照してください。
アプリケーションでは IDataRecord インターフェイスのインスタンスは直接作成されず、IDataRecord を継承するクラスのインスタンスが作成されます。これは通常、Command オブジェクトの ExecuteReader メソッドで DataReader を取得して実行します。
IDataRecord を継承するクラスは、すべての継承されたメンバを実装する必要があり、通常、プロバイダ固有の機能を追加する追加メンバを定義する必要があります。
DataReader を実装するプロバイダは、データを共通言語ランタイム (CLR) 型で公開する必要があります。CLR に含まれない一部の型に対して型の強制変換が定義されます。これらの値には、CLR 型に適合する代替型としてアクセスできる場合があります。その例として、提案される OLE DB データ型から CLR 型へのマップを次の表に示します。CLR 型列のかっこ内は代替型です。
OLE DB 型 | CLR 型 |
---|---|
DBTYPE_BOOL | Int16 |
DBTYPE_BSTR | |
DBTYPE_BYTES | byte[] |
DBTYPE_CY | |
DBTYPE_DATE | |
DBTYPE_DBDATE | |
DBTYPE_DBTIME | |
DBTYPE_DBTIMESTAMP | |
DBTYPE_DECIMAL | |
DBTYPE_EMPTY | |
DBTYPE_ERROR | ExternalException |
DBTYPE_FILETIME | |
DBTYPE_GUID | |
DBTYPE_HCHAPTER | サポートされていません |
DBTYPE_I1 | SByte |
DBTYPE_I2 | Int16 |
DBTYPE_I4 | Int32 |
DBTYPE_I8 | Int64 |
DBTYPE_IDISPATCH | |
DBTYPE_IUNKNOWN | |
DBTYPE_NULL | DBNull.Value |
DBTYPE_NUMERIC | |
DBTYPE_PROPVARIANT | |
DBTYPE_R4 | |
DBTYPE_R8 | |
DBTYPE_STR | |
DBTYPE_UDT | サポートされていません |
DBTYPE_UI1 | byte (Int16) |
DBTYPE_UI2 | UInt16 (Int32) |
DBTYPE_UI4 | UInt32 (Int64) |
DBTYPE_UI8 | UInt64 (Decimal) |
DBTYPE_VARIANT | |
DBTYPE_VARNUMERIC | サポートされていません |
DBTYPE_WSTR |

派生クラス SqlConnection、SqlCommand、および SqlDataReader のインスタンスを作成する例を次に示します。この例では、データを読み取り、コンソールに出力します。最後に、この例では SqlDataReader を閉じてから、SqlConnection を閉じます。
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(); } }

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- IDataRecord インターフェイスのページへのリンク