IDataRecord インターフェイス
DataReader から各行内の列値にアクセスできるようにします。リレーショナル データベースにアクセスする .NET Framework データ プロバイダによって実装されます。
この型のすべてのメンバの一覧については、IDataRecord メンバ を参照してください。
Public Interface IDataRecord
[C#]
public interface IDataRecord
[C++]
public __gc __interface IDataRecord
[JScript]
public interface IDataRecord
IDataRecord を実装するクラス
クラス | 説明 |
---|---|
DbDataRecord | IDataRecord と ICustomTypeDescriptor を実装し、 DbEnumerator のデータ連結をサポートします。 |
OdbcDataReader | データ ソースからデータ行の前方向ストリームを読み取る方法を提供します。このクラスは継承できません。 |
OleDbDataReader | データ ソースからデータ行の前方向ストリームを読み取る方法を提供します。このクラスは継承できません。 |
OracleDataReader | データ ソースからデータ行の前方向ストリームを読み取る方法を提供します。このクラスは継承できません。 |
SqlCeDataReader | データ ソースからデータ行の前方向ストリームを読み取る方法を提供します。このクラスは継承できません。 |
SqlDataReader | SQL Server データベースから行の前方向ストリームを読み取る方法を提供します。このクラスは継承できません。 |
解説
IDataReader インターフェイスと IDataRecord インターフェイスによって、継承クラスは結果セットの 1 つ以上の前方向ストリームを読み込む手段を提供する DataReader クラスを実装できます。DataReader クラスの詳細については、「 DataReader によるデータの取得 」を参照してください。.NET Framework データ プロバイダの実装の詳細については、「 .NET Framework データ プロバイダの実装 」を参照してください。
アプリケーションでは IDataRecord インターフェイスのインスタンスは直接作成されず、 IDataRecord を継承するクラスのインスタンスが作成されます。通常、Command オブジェクトの ExecuteReader メソッドで DataReader を取得して実行されます。
IDataRecord を継承するクラスは、すべての継承されたメンバを実装する必要があり、通常、プロバイダ固有の機能を追加する追加メンバを定義する必要があります。
DataReader を実装するプロバイダは、データを共通言語ランタイム (CLR) 型で公開する必要があります。CLR に含まれない一部の型に対して型の強制変換が定義されます。これらの値には、CLR 型に適合する代替型としてアクセスできる場合があります。その例として、提案される OLE DB データ型から CLR 型へのマップを次の表に示します。CLR 型列のかっこ内は代替型です。
OLE DB 型 | CLR 型 |
---|---|
DBTYPE_BOOL | Int16 |
DBTYPE_BSTR | string |
DBTYPE_BYTES | byte[] |
DBTYPE_CY | Decimal |
DBTYPE_DATE | DateTime |
DBTYPE_DBDATE | DateTime |
DBTYPE_DBTIME | DateTime |
DBTYPE_DBTIMESTAMP | DateTime |
DBTYPE_DECIMAL | 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 | Object |
DBTYPE_IUNKNOWN | Object |
DBTYPE_NULL | DBNull.Value |
DBTYPE_NUMERIC | Decimal |
DBTYPE_PROPVARIANT | Object |
DBTYPE_R4 | Single |
DBTYPE_R8 | Double |
DBTYPE_STR | string |
DBTYPE_UDT | サポートされていません |
DBTYPE_UI1 | byte (Int16) |
DBTYPE_UI2 | UInt16 (Int32) |
DBTYPE_UI4 | UInt32 (Int64) |
DBTYPE_UI8 | UInt64 (Decimal) |
DBTYPE_VARIANT | Object |
DBTYPE_VARNUMERIC | サポートされていません |
DBTYPE_WSTR | string |
使用例
[Visual Basic, C#, C++] 派生クラス SqlConnection 、 SqlCommand 、および SqlDataReader のインスタンスを作成する例を次に示します。この例では、データを読み取り、コンソールに出力します。最後に、この例では SqlDataReader を閉じてから、 SqlConnection を閉じます。
Public Sub ReadMyData(myConnString As String)
Dim mySelectQuery As String = "SELECT OrderID, CustomerID FROM Orders"
Dim myConnection As New SqlConnection(myConnString)
Dim myCommand As New SqlCommand(mySelectQuery, myConnection)
myConnection.Open()
Dim myReader As SqlDataReader
myReader = myCommand.ExecuteReader()
' Always call Read before accessing data.
While myReader.Read()
Console.WriteLine((myReader.GetInt32(0) & ", " & myReader.GetString(1)))
End While
' always call Close when done reading.
myReader.Close()
' Close the connection when done with it.
myConnection.Close()
End Sub 'ReadMyData
[C#]
public void ReadMyData(string myConnString) {
string mySelectQuery = "SELECT OrderID, CustomerID FROM Orders";
SqlConnection myConnection = new SqlConnection(myConnString);
SqlCommand myCommand = new SqlCommand(mySelectQuery,myConnection);
myConnection.Open();
SqlDataReader myReader;
myReader = myCommand.ExecuteReader();
// Always call Read before accessing data.
while (myReader.Read()) {
Console.WriteLine(myReader.GetInt32(0) + ", " + myReader.GetString(1));
}
// always call Close when done reading.
myReader.Close();
// Close the connection when done with it.
myConnection.Close();
}
[C++]
public:
void ReadMyData(String* myConnString) {
String* mySelectQuery = S"SELECT OrderID, CustomerID FROM Orders";
SqlConnection* myConnection = new SqlConnection(myConnString);
SqlCommand* myCommand = new SqlCommand(mySelectQuery,myConnection);
myConnection->Open();
SqlDataReader* myReader;
myReader = myCommand->ExecuteReader();
// Always call Read before accessing data.
while (myReader->Read()) {
Console::WriteLine(S"{0}, {1}", __box(myReader->GetInt32(0)), myReader->GetString(1));
}
// always call Close when done reading.
myReader->Close();
// Close the connection when done with it.
myConnection->Close();
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Data
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET
アセンブリ: System.Data (System.Data.dll 内)