IDataRecord インターフェイス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
DataReaderの各行内の列値へのアクセスを提供し、リレーショナル データベースにアクセスする .NET データ プロバイダーによって実装されます。
public interface class IDataRecord
public interface IDataRecord
type IDataRecord = interface
Public Interface IDataRecord
- 派生
例
次の例では、派生クラス、 SqlConnection、 SqlCommand、および SqlDataReaderのインスタンスを作成します。 この例では、データを読み取り、コンソールに書き出します。 最後に、 SqlDataReaderを閉じ、 SqlConnectionを閉じます。
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]));
}
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
注釈
IDataReaderインターフェイスとIDataRecord インターフェイスを使用すると、継承クラスでDataReader クラスを実装できます。 これにより、結果セットの 1 つ以上の前方専用ストリームを読み取る方法が提供されます。
DataReader クラスの詳細については、「DataReader を使用したデータの取得」を参照してください。
アプリケーションは、 IDataRecord インターフェイスのインスタンスを直接作成するのではなく、 IDataRecordを継承するクラスのインスタンスを作成します。 通常、これを行うには、Command オブジェクトのExecuteReaderメソッドを使用してDataReaderを取得します。
IDataRecordを継承するクラスは、継承されたすべてのメンバーを実装し、通常はプロバイダー固有の機能を追加するために追加のメンバーを定義する必要があります。
DataReaderを実装するプロバイダーは、共通言語ランタイム (CLR) 型でデータを公開する必要があります。 型強制型変換は、CLR に含まれていない一部の型に対して定義されます。 これらの値は、CLR 型に準拠する代替型としてアクセスできます。 例として、次の表に、OLE DB データ型から CLR 型への推奨されるマッピングと、代替型をかっこで囲んだ一覧を示します。
| OLE DB 型 | CLR 型 |
|---|---|
| DBTYPE_BOOL | Int16 |
| DBTYPE_BSTR | 文字列 |
| DBTYPE_BYTES | byte[] |
| DBTYPE_CY | 小数 |
| DBTYPE_DATE | DateTime |
| DBTYPE_DBDATE | DateTime |
| DBTYPE_DBTIME | DateTime |
| DBTYPE_DBTIMESTAMP | DateTime |
| DBTYPE_DECIMAL | 小数 |
| DBTYPE_EMPTY | null 値 |
| DBTYPE_ERROR(データベースタイプのエラー) | ExternalException |
| DBTYPE_FILETIME | DateTime |
| DBTYPE_GUID | 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 | Double |
| 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 | 文字列 |
プロパティ
| 名前 | 説明 |
|---|---|
| FieldCount |
現在の行の列数を取得します。 |
| Item[Int32] |
指定したインデックス位置にある列を取得します。 |
| Item[String] |
指定した名前の列を取得します。 |
メソッド
| 名前 | 説明 |
|---|---|
| GetBoolean(Int32) |
指定した列の値をブール値として取得します。 |
| GetByte(Int32) |
指定した列の 8 ビット符号なし整数値を取得します。 |
| GetBytes(Int32, Int64, Byte[], Int32, Int32) |
指定されたバッファー オフセットから始まる、指定した列オフセットからバッファーへのバイト ストリームを配列として読み取ります。 |
| GetChar(Int32) |
指定した列の文字値を取得します。 |
| GetChars(Int32, Int64, Char[], Int32, Int32) |
指定されたバッファー オフセットから始まる、指定した列オフセットからバッファーに文字のストリームを配列として読み取ります。 |
| GetData(Int32) |
指定した列序数の IDataReader を返します。 |
| GetDataTypeName(Int32) |
指定したフィールドのデータ型情報を取得します。 |
| GetDateTime(Int32) |
指定したフィールドの日付と時刻のデータ値を取得します。 |
| GetDecimal(Int32) |
指定したフィールドの固定位置の数値を取得します。 |
| GetDouble(Int32) |
指定したフィールドの倍精度浮動小数点数を取得します。 |
| GetFieldType(Int32) |
GetValue(Int32)から返されるObjectの種類に対応するType情報を取得します。 |
| GetFloat(Int32) |
指定したフィールドの単精度浮動小数点数を取得します。 |
| GetGuid(Int32) |
指定したフィールドの GUID 値を返します。 |
| GetInt16(Int32) |
指定したフィールドの 16 ビット符号付き整数値を取得します。 |
| GetInt32(Int32) |
指定したフィールドの 32 ビット符号付き整数値を取得します。 |
| GetInt64(Int32) |
指定したフィールドの 64 ビット符号付き整数値を取得します。 |
| GetName(Int32) |
検索するフィールドの名前を取得します。 |
| GetOrdinal(String) |
名前付きフィールドのインデックスを返します。 |
| GetString(Int32) |
指定したフィールドの文字列値を取得します。 |
| GetValue(Int32) |
指定したフィールドの値を返します。 |
| GetValues(Object[]) |
オブジェクトの配列に現在のレコードの列値を設定します。 |
| IsDBNull(Int32) |
指定したフィールドが null に設定されているかどうかを返します。 |