OracleDataReader クラス
アセンブリ: System.Data.OracleClient (system.data.oracleclient.dll 内)


OracleDataReader を作成するには、コンストラクタを直接使用せずに、OracleCommand オブジェクトの ExecuteReader メソッドを呼び出す必要があります。
データの読み取り中に別のプロセスまたはスレッドが結果セットに加えた変更が、OracleDataReader のユーザーに表示されることがあります。
OracleDataReader を閉じた後に呼び出すことができるのは、IsClosed プロパティと RecordsAffected プロパティだけです。場合によっては、RecordsAffected を呼び出す前に Close を呼び出す必要があります。
OracleDataReader はいつでも複数開くことができます。
OracleDataReader を使用して Oracle の REF CURSOR を取得する、2 つの Visual Basic の例を次に示します。この例では、Oracle の Scott/Tiger スキーマで定義されたテーブルを使用し、次の PL/SQL パッケージとパッケージ本体を必要とします。例で使用するために、これらをサーバー側で作成する必要があります。
Oracle サーバーで、次の Oracle パッケージを作成します。
CREATE OR REPLACE PACKAGE CURSPKG AS TYPE T_CURSOR IS REF CURSOR; PROCEDURE OPEN_ONE_CURSOR (N_EMPNO IN NUMBER, IO_CURSOR IN OUT T_CURSOR); PROCEDURE OPEN_TWO_CURSORS (EMPCURSOR OUT T_CURSOR, DEPTCURSOR OUT T_CURSOR); END CURSPKG; /
Oracle サーバーで、次の Oracle パッケージ本体を作成します。
CREATE OR REPLACE PACKAGE BODY CURSPKG AS PROCEDURE OPEN_ONE_CURSOR (N_EMPNO IN NUMBER, IO_CURSOR OUT T_CURSOR) IS V_CURSOR T_CURSOR; BEGIN IF N_EMPNO <> 0 THEN OPEN V_CURSOR FOR SELECT EMP.EMPNO, EMP.ENAME, DEPT.DEPTNO, DEPT.DNAME FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND EMP.EMPNO = N_EMPNO; ELSE OPEN V_CURSOR FOR SELECT EMP.EMPNO, EMP.ENAME, DEPT.DEPTNO, DEPT.DNAME FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO; END IF; IO_CURSOR := V_CURSOR; END OPEN_ONE_CURSOR; PROCEDURE OPEN_TWO_CURSORS (EMPCURSOR OUT T_CURSOR, DEPTCURSOR OUT T_CURSOR) IS V_CURSOR1 T_CURSOR; V_CURSOR2 T_CURSOR; BEGIN OPEN V_CURSOR1 FOR SELECT * FROM EMP; OPEN V_CURSOR2 FOR SELECT * FROM DEPT; EMPCURSOR := V_CURSOR1; DEPTCURSOR := V_CURSOR2; END OPEN_TWO_CURSORS; END CURSPKG; /
REF CURSOR パラメータを返す PL/SQL ストアド プロシージャを実行し、値を OracleDataReader として読み取る Visual Basic の例を示します。
Private Sub ReadOracleData(ByVal connectionString As String) Dim connection As New OracleConnection(connectionString) Dim command As New OracleCommand() Dim reader As OracleDataReader connection.Open() command.Connection = connection command.CommandText = "CURSPKG.OPEN_ONE_CURSOR" command.CommandType = CommandType.StoredProcedure command.Parameters.Add(New OracleParameter("N_EMPNO", OracleType.Number)).Value = 7369 command.Parameters.Add(New OracleParameter("IO_CURSOR", OracleType.Cursor)).Direction = ParameterDirection.Output reader = command.ExecuteReader() While (reader.Read()) ' Do something with the values. End While reader.Close() connection.Close() End Sub
2 つの REF CURSOR パラメータを返す PL/SQL ストアド プロシージャを実行し、OracleDataReader を使用して値を読み取る Visual Basic の例を示します。
Private Sub ReadOracleData(ByVal connectionString As String) Dim dataSet As New DataSet() Dim connection As New OracleConnection(connectionString) Dim command As New OracleCommand() Dim reader As OracleDataReader connection.Open() command.Connection = connection command.CommandText = "CURSPKG.OPEN_TWO_CURSORS" command.CommandType = CommandType.StoredProcedure command.Parameters.Add(New OracleParameter("EMPCURSOR", OracleType.Cursor)).Direction = ParameterDirection.Output command.Parameters.Add(New OracleParameter("DEPTCURSOR", OracleType.Cursor)).Direction = ParameterDirection.Output reader = command.ExecuteReader(CommandBehavior.CloseConnection) While (reader.Read()) ' Do something with the values. End While reader.NextResult() While (reader.Read()) ' Do something with the values. End While reader.Close() connection.Close() End Sub
Oracle テーブルを作成し、作成したテーブルにデータを読み込む C# の例を示します。この後の例 (OracleType 構造体を使用したデータに、OracleDataReader を使用してアクセスする例) を実行する前に、この例を実行する必要があります。
public void Setup(string connectionString) { OracleConnection connection = new OracleConnection(connectionString); try { connection.Open(); OracleCommand command = connection.CreateCommand(); command.CommandText ="CREATE TABLE OracleTypesTable (MyVarchar2 varchar2(3000),MyNumber number(28,4) PRIMARY KEY,MyDate date, MyRaw raw(255))"; command.ExecuteNonQuery(); command.CommandText ="INSERT INTO OracleTypesTable VALUES ('test', 2, to_date('2000-01-11 12:54:01','yyyy-mm-dd hh24:mi:ss'), '0001020304')"; command.ExecuteNonQuery(); command.CommandText="SELECT * FROM OracleTypesTable"; } catch(Exception) { } finally { connection.Close(); } }
OracleDataReader を使用してデータにアクセスし、複数の OracleType 構造体を使用してデータを表示する C# の例を示します。
public void ReadOracleTypesExample(string connectionString) { OracleConnection connection = new OracleConnection(connectionString); connection.Open(); OracleCommand command = connection.CreateCommand(); try { command.CommandText = "SELECT * FROM OracleTypesTable"; OracleDataReader reader = command.ExecuteReader(); reader.Read(); //Using the Oracle specific getters for each type is faster than //using GetOracleValue. //First column, MyVarchar2, is a VARCHAR2 data type in Oracle Server //and maps to OracleString. OracleString oraclestring1 = reader.GetOracleString(0); Console.WriteLine("OracleString " + oraclestring1.ToString()); //Second column, MyNumber, is a NUMBER data type in Oracle Server //and maps to OracleNumber. OracleNumber oraclenumber1 = reader.GetOracleNumber(1); Console.WriteLine("OracleNumber " + oraclenumber1.ToString()); //Third column, MyDate, is a DATA data type in Oracle Server //and maps to OracleDateTime. OracleDateTime oracledatetime1 = reader.GetOracleDateTime(2); Console.WriteLine("OracleDateTime " + oracledatetime1.ToString()); //Fourth column, MyRaw, is a RAW data type in Oracle Server and //maps to OracleBinary. OracleBinary oraclebinary1 = reader.GetOracleBinary(3); //Calling value on a null OracleBinary throws //OracleNullValueException; therefore, check for a null value. if (oraclebinary1.IsNull==false) { foreach(byte b in oraclebinary1.Value) { Console.WriteLine("byte " + b.ToString()); } } reader.Close(); } catch(Exception e) { Console.WriteLine(e.ToString()); } finally { connection.Close(); } }

OracleConnection、OracleCommand、および OracleDataReader を作成する例を次に示します。この例では、データを読み取り、コンソールに出力します。最後に、この例では OracleDataReader を閉じてから、OracleConnection を閉じます。
Public Sub ReadData(ByVal connectionString As String) Dim queryString As String = "SELECT EmpNo, EName FROM Emp" Using connection As New OracleConnection(connectionString) Dim command As New OracleCommand(queryString, connection) connection.Open() Dim reader As OracleDataReader reader = command.ExecuteReader() ' Always call Read before accessing data. While reader.Read() Console.WriteLine(reader.GetInt32(0).ToString() + ", " _ + reader.GetString(1)) End While ' always call Close when done reading. reader.Close() End Using End Sub
public void ReadData(string connectionString) { string queryString = "SELECT EmpNo, EName FROM Emp"; using (OracleConnection connection = new OracleConnection(connectionString)) { OracleCommand command = new OracleCommand(queryString, connection); connection.Open(); OracleDataReader reader; reader = command.ExecuteReader(); // Always call Read before accessing data. while (reader.Read()) { Console.WriteLine(reader.GetInt32(0) + ", " + reader.GetString(1)); } // always call Close when done reading. reader.Close(); } }

System.MarshalByRefObject
System.Data.Common.DbDataReader
System.Data.OracleClient.OracleDataReader


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


OracleDataReader プロパティ

名前 | 説明 | |
---|---|---|
![]() | Depth | オーバーライドされます。 現在の行の入れ子の深さを示す値を取得します。 |
![]() | FieldCount | オーバーライドされます。 現在の行の列数を取得します。 |
![]() | HasRows | オーバーライドされます。 OracleDataReader に 1 行以上の行が格納されているかどうかを示す値を取得します。 |
![]() | IsClosed | オーバーライドされます。 OracleDataReader が閉じているかどうかを示します。 |
![]() | Item | オーバーロードされます。 オーバーライドされます。 特定の列の値をネイティブ形式で取得します。 |
![]() | RecordsAffected | オーバーライドされます。 SQL ステートメントの実行によって変更、挿入、または削除された行の数を取得します。 |
![]() | VisibleFieldCount | DbDataReader の非表示ではないフィールドの数を取得します。 ( DbDataReader から継承されます。) |

OracleDataReader メソッド

名前 | 説明 | |
---|---|---|
![]() | Close | オーバーライドされます。 OracleDataReader オブジェクトを閉じます。 |
![]() | CreateObjRef | リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 ( MarshalByRefObject から継承されます。) |
![]() | Dispose | オーバーロードされます。 DbDataReader によって使用されているリソースを解放します。 ( DbDataReader から継承されます。) |
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
![]() | GetBoolean | オーバーライドされます。 指定した列の値をブール値として取得します。 |
![]() | GetByte | オーバーライドされます。 指定した列の値をバイトとして取得します。 |
![]() | GetBytes | オーバーライドされます。 指定したバッファ オフセットを開始位置として、指定した列オフセットからバッファに、バイトのストリームを配列として読み込みます。 |
![]() | GetChar | オーバーライドされます。 指定した列の値を文字として取得します。 |
![]() | GetChars | オーバーライドされます。 指定したバッファ オフセットを開始位置として、指定した列オフセットからバッファに、文字のストリームを配列として読み込みます。 |
![]() | GetData | 要求された列の序数の DbDataReader オブジェクトを返します。 ( DbDataReader から継承されます。) |
![]() | GetDataTypeName | オーバーライドされます。 ソース データ型名を取得します。 |
![]() | GetDateTime | オーバーライドされます。 指定した列の値を DateTime オブジェクトとして取得します。 |
![]() | GetDecimal | オーバーライドされます。 指定した列の値を Decimal オブジェクトとして取得します。 |
![]() | GetDouble | オーバーライドされます。 指定した列の値を倍精度浮動小数点数値として取得します。 |
![]() | GetEnumerator | オーバーライドされます。 データ リーダー内の行を反復処理するために使用できる IEnumerator を返します。 |
![]() | GetFieldType | オーバーライドされます。 オブジェクトのデータ型である Type を取得します。 |
![]() | GetFloat | オーバーライドされます。 指定した列の値を単精度浮動小数点数として取得します。 |
![]() | GetGuid | オーバーライドされます。 指定した列の値をグローバル一意識別子 (GUID) として取得します。 |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
![]() | GetInt16 | オーバーライドされます。 指定した列の値を 16 ビット符号付き整数として取得します。 |
![]() | GetInt32 | オーバーライドされます。 指定した列の値を 32 ビット符号付き整数として取得します。 |
![]() | GetInt64 | オーバーライドされます。 指定した列の値を 64 ビット符号付き整数として取得します。 |
![]() | GetLifetimeService | 対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。 ( MarshalByRefObject から継承されます。) |
![]() | GetName | オーバーライドされます。 指定した列の名前を取得します。 |
![]() | GetOracleBFile | 指定した列の値を OracleBFile オブジェクトとして取得します。 |
![]() | GetOracleBinary | 指定した列の値を OracleBinary オブジェクトとして取得します。 |
![]() | GetOracleDateTime | 指定した列の値を OracleDateTime オブジェクトとして取得します。 |
![]() | GetOracleLob | 指定した列の値を OracleLob オブジェクトとして取得します。 |
![]() | GetOracleMonthSpan | 指定した列の値を OracleMonthSpan オブジェクトとして取得します。 |
![]() | GetOracleNumber | 指定した列の値を OracleNumber オブジェクトとして取得します。 |
![]() | GetOracleString | 指定した列の値を OracleString オブジェクトとして取得します。 |
![]() | GetOracleTimeSpan | 指定した列の値を OracleTimeSpan オブジェクトとして取得します。 |
![]() | GetOracleValue | 指定した序数の列の値を Oracle の書式で取得します。 |
![]() | GetOracleValues | 現在の行のすべての属性列を Oracle の書式で取得します。 |
![]() | GetOrdinal | オーバーライドされます。 列の名前を指定して、列の序数を取得します。 |
![]() | GetProviderSpecificFieldType | オーバーライドされます。 基になるプロバイダ固有フィールド型の内部表現である Object を取得します。 |
![]() | GetProviderSpecificValue | オーバーライドされます。 基になるプロバイダ固有フィールド型の内部表現である Object を取得します。 |
![]() | GetProviderSpecificValues | オーバーライドされます。 基になるプロバイダ固有の値の内部表現であるオブジェクトの配列を取得します。 |
![]() | GetSchemaTable | オーバーライドされます。 OracleDataReader の列メタデータを記述する DataTable を返します。 |
![]() | GetString | オーバーライドされます。 指定した列の値を文字列として取得します。 |
![]() | GetTimeSpan | 指定した列の値を System.TimeSpan として取得します。 |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | GetValue | オーバーライドされます。 指定した序数の列の値をネイティブ形式で取得します。 |
![]() | GetValues | オーバーライドされます。 現在の行のすべての属性列を取得します。 |
![]() | InitializeLifetimeService | 対象のインスタンスの有効期間ポリシーを制御する、有効期間サービス オブジェクトを取得します。 ( MarshalByRefObject から継承されます。) |
![]() | IsDBNull | オーバーライドされます。 列に格納されている値が存在しない値または欠損値かどうかを示す値を取得します。 |
![]() | NextResult | オーバーライドされます。 OracleDataReader を次の結果に進めます。 |
![]() | Read | オーバーライドされます。 OracleDataReader を次のレコードに進めます。 |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Dispose | オーバーロードされます。 DbDataReader によって使用されているリソースを解放します。 ( DbDataReader から継承されます。) |
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | GetDbDataReader | プロバイダ固有の実装でオーバーライドできる、要求された列の序数の DbDataReader オブジェクトを返します。 ( DbDataReader から継承されます。) |
![]() | MemberwiseClone | オーバーロードされます。 ( MarshalByRefObject から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | System.Collections.IEnumerable.GetEnumerator |

OracleDataReader メンバ
データ ソースからデータ行の前方向ストリームを読み取る方法を提供します。このクラスは継承できません。
OracleDataReader データ型で公開されるメンバを以下の表に示します。

名前 | 説明 | |
---|---|---|
![]() | Depth | オーバーライドされます。 現在の行の入れ子の深さを示す値を取得します。 |
![]() | FieldCount | オーバーライドされます。 現在の行の列数を取得します。 |
![]() | HasRows | オーバーライドされます。 OracleDataReader に 1 行以上の行が格納されているかどうかを示す値を取得します。 |
![]() | IsClosed | オーバーライドされます。 OracleDataReader が閉じているかどうかを示します。 |
![]() | Item | オーバーロードされます。 オーバーライドされます。 特定の列の値をネイティブ形式で取得します。 |
![]() | RecordsAffected | オーバーライドされます。 SQL ステートメントの実行によって変更、挿入、または削除された行の数を取得します。 |
![]() | VisibleFieldCount | DbDataReader の非表示ではないフィールドの数を取得します。(DbDataReader から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Close | オーバーライドされます。 OracleDataReader オブジェクトを閉じます。 |
![]() | CreateObjRef | リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 (MarshalByRefObject から継承されます。) |
![]() | Dispose | オーバーロードされます。 DbDataReader によって使用されているリソースを解放します。 (DbDataReader から継承されます。) |
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
![]() | GetBoolean | オーバーライドされます。 指定した列の値をブール値として取得します。 |
![]() | GetByte | オーバーライドされます。 指定した列の値をバイトとして取得します。 |
![]() | GetBytes | オーバーライドされます。 指定したバッファ オフセットを開始位置として、指定した列オフセットからバッファに、バイトのストリームを配列として読み込みます。 |
![]() | GetChar | オーバーライドされます。 指定した列の値を文字として取得します。 |
![]() | GetChars | オーバーライドされます。 指定したバッファ オフセットを開始位置として、指定した列オフセットからバッファに、文字のストリームを配列として読み込みます。 |
![]() | GetData | 要求された列の序数の DbDataReader オブジェクトを返します。 (DbDataReader から継承されます。) |
![]() | GetDataTypeName | オーバーライドされます。 ソース データ型名を取得します。 |
![]() | GetDateTime | オーバーライドされます。 指定した列の値を DateTime オブジェクトとして取得します。 |
![]() | GetDecimal | オーバーライドされます。 指定した列の値を Decimal オブジェクトとして取得します。 |
![]() | GetDouble | オーバーライドされます。 指定した列の値を倍精度浮動小数点数値として取得します。 |
![]() | GetEnumerator | オーバーライドされます。 データ リーダー内の行を反復処理するために使用できる IEnumerator を返します。 |
![]() | GetFieldType | オーバーライドされます。 オブジェクトのデータ型である Type を取得します。 |
![]() | GetFloat | オーバーライドされます。 指定した列の値を単精度浮動小数点数として取得します。 |
![]() | GetGuid | オーバーライドされます。 指定した列の値をグローバル一意識別子 (GUID) として取得します。 |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
![]() | GetInt16 | オーバーライドされます。 指定した列の値を 16 ビット符号付き整数として取得します。 |
![]() | GetInt32 | オーバーライドされます。 指定した列の値を 32 ビット符号付き整数として取得します。 |
![]() | GetInt64 | オーバーライドされます。 指定した列の値を 64 ビット符号付き整数として取得します。 |
![]() | GetLifetimeService | 対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。 (MarshalByRefObject から継承されます。) |
![]() | GetName | オーバーライドされます。 指定した列の名前を取得します。 |
![]() | GetOracleBFile | 指定した列の値を OracleBFile オブジェクトとして取得します。 |
![]() | GetOracleBinary | 指定した列の値を OracleBinary オブジェクトとして取得します。 |
![]() | GetOracleDateTime | 指定した列の値を OracleDateTime オブジェクトとして取得します。 |
![]() | GetOracleLob | 指定した列の値を OracleLob オブジェクトとして取得します。 |
![]() | GetOracleMonthSpan | 指定した列の値を OracleMonthSpan オブジェクトとして取得します。 |
![]() | GetOracleNumber | 指定した列の値を OracleNumber オブジェクトとして取得します。 |
![]() | GetOracleString | 指定した列の値を OracleString オブジェクトとして取得します。 |
![]() | GetOracleTimeSpan | 指定した列の値を OracleTimeSpan オブジェクトとして取得します。 |
![]() | GetOracleValue | 指定した序数の列の値を Oracle の書式で取得します。 |
![]() | GetOracleValues | 現在の行のすべての属性列を Oracle の書式で取得します。 |
![]() | GetOrdinal | オーバーライドされます。 列の名前を指定して、列の序数を取得します。 |
![]() | GetProviderSpecificFieldType | オーバーライドされます。 基になるプロバイダ固有フィールド型の内部表現である Object を取得します。 |
![]() | GetProviderSpecificValue | オーバーライドされます。 基になるプロバイダ固有フィールド型の内部表現である Object を取得します。 |
![]() | GetProviderSpecificValues | オーバーライドされます。 基になるプロバイダ固有の値の内部表現であるオブジェクトの配列を取得します。 |
![]() | GetSchemaTable | オーバーライドされます。 OracleDataReader の列メタデータを記述する DataTable を返します。 |
![]() | GetString | オーバーライドされます。 指定した列の値を文字列として取得します。 |
![]() | GetTimeSpan | 指定した列の値を System.TimeSpan として取得します。 |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | GetValue | オーバーライドされます。 指定した序数の列の値をネイティブ形式で取得します。 |
![]() | GetValues | オーバーライドされます。 現在の行のすべての属性列を取得します。 |
![]() | InitializeLifetimeService | 対象のインスタンスの有効期間ポリシーを制御する、有効期間サービス オブジェクトを取得します。 (MarshalByRefObject から継承されます。) |
![]() | IsDBNull | オーバーライドされます。 列に格納されている値が存在しない値または欠損値かどうかを示す値を取得します。 |
![]() | NextResult | オーバーライドされます。 OracleDataReader を次の結果に進めます。 |
![]() | Read | オーバーライドされます。 OracleDataReader を次のレコードに進めます。 |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Dispose | オーバーロードされます。 DbDataReader によって使用されているリソースを解放します。 (DbDataReader から継承されます。) |
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | GetDbDataReader | プロバイダ固有の実装でオーバーライドできる、要求された列の序数の DbDataReader オブジェクトを返します。 (DbDataReader から継承されます。) |
![]() | MemberwiseClone | オーバーロードされます。 ( MarshalByRefObject から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | System.Collections.IEnumerable.GetEnumerator |

Weblioに収録されているすべての辞書からOracleDataReaderを検索する場合は、下記のリンクをクリックしてください。

- OracleDataReaderのページへのリンク