OracleDataReader クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
データ ソースからデータ行の前方向ストリームを読み取る方法を提供します。 このクラスは継承できません。
public ref class OracleDataReader sealed : MarshalByRefObject, IDisposable, System::Collections::IEnumerable, System::Data::IDataReader
public ref class OracleDataReader sealed : System::Data::Common::DbDataReader
public sealed class OracleDataReader : MarshalByRefObject, IDisposable, System.Collections.IEnumerable, System.Data.IDataReader
public sealed class OracleDataReader : System.Data.Common.DbDataReader
type OracleDataReader = class
inherit MarshalByRefObject
interface IDataReader
interface IDisposable
interface IDataRecord
interface IEnumerable
type OracleDataReader = class
inherit DbDataReader
Public NotInheritable Class OracleDataReader
Inherits MarshalByRefObject
Implements IDataReader, IDisposable, IEnumerable
Public NotInheritable Class OracleDataReader
Inherits DbDataReader
- 継承
- 継承
- 実装
例
次の例では、 、 OracleConnection、 OracleCommandおよび を作成します OracleDataReader。 この例では、データを読み取り、コンソールに書き出します。 最後に、この例では を閉じ、 OracleDataReader次に を OracleConnection閉じます。
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();
using(OracleDataReader reader = command.ExecuteReader())
{
// Always call Read before accessing data.
while (reader.Read())
{
Console.WriteLine(reader.GetInt32(0) + ", " + reader.GetString(1));
}
}
}
}
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()
Using reader As OracleDataReader = command.ExecuteReader()
' Always call Read before accessing data.
While reader.Read()
Console.WriteLine(reader.GetInt32(0).ToString() + ", " _
+ reader.GetString(1))
End While
End Using
End Using
End Sub
注釈
を OracleDataReader作成するには、コンストラクターを ExecuteReader 直接使用するのではなく、 オブジェクトの OracleCommand メソッドを呼び出す必要があります。
データの読み取り中に別のプロセスまたはスレッドによって結果セットに加えられた変更は、 OracleDataReaderのユーザーに表示される場合があります。
IsClosed が閉じた後に呼び出すことができるプロパティは、RecordsAffected と OracleDataReader だけです。 場合によっては、 を呼び出す Close 前に を呼び出す RecordsAffected必要があります。
任意の OracleDataReader 時点で複数のを開くことができます。
次の 2 つの Visual Basic の例は、 を OracleDataReader 使用して Oracle REF CURSOR
を取得する方法を示しています。 これらの例では、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;
/
次の Visual Basic の例では、パラメーターを返す PL/SQL ストアド プロシージャを REF CURSOR
実行し、値を OracleDataReaderとして読み取ります。
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
次の Visual Basic の例では、2 つの REF CURSOR
パラメーターを返す PL/SQL ストアド プロシージャを実行し、 を使用して値を OracleDataReader読み取ります。
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
この C# の例では、Oracle テーブルを作成し、データと共に読み込みます。 次の例を実行する前に、この例を実行する必要があります。この例では、 を OracleDataReader 使用して OracleType 構造体を使用してデータにアクセスする方法を示します。
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();
}
}
この C# の例では、 を OracleDataReader 使用してデータにアクセスし、複数 OracleType の構造体を使用してデータを表示します。
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();
}
}
プロパティ
Depth |
現在の行の入れ子の深さを示す値を取得します。 |
FieldCount |
現在の行の列の数を取得します。 |
HasRows |
OracleDataReader に 1 行以上の行が格納されているかどうかを示す値を取得します。 |
IsClosed |
OracleDataReader が閉じているかどうかを示します。 |
Item[Int32] |
列の序数によって指定した列の値をネイティブ形式で取得します。 |
Item[String] |
列名によって指定した列の値をネイティブ形式で取得します。 |
RecordsAffected |
SQL ステートメントの実行によって変更、挿入、または削除された行の数を取得します。 |
VisibleFieldCount |
DbDataReader 内の表示フィールドの数を取得します。 (継承元 DbDataReader) |
メソッド
Close() |
OracleDataReader オブジェクトを閉じます。 |
CloseAsync() |
DbDataReader オブジェクトを非同期に閉じます。 (継承元 DbDataReader) |
CreateObjRef(Type) |
リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 (継承元 MarshalByRefObject) |
Dispose() |
このオブジェクトによって使用されているリソースを解放します。 |
Dispose() |
DbDataReader クラスの現在のインスタンスによって使用されているすべてのリソースを解放します。 (継承元 DbDataReader) |
Dispose(Boolean) |
DbDataReader によって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。 (継承元 DbDataReader) |
DisposeAsync() |
DbDataReader クラスの現在のインスタンスによって使用されているすべてのリソースを非同期で解放します。 (継承元 DbDataReader) |
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
GetBoolean(Int32) |
指定された列の値を Boolean として取得します。 |
GetByte(Int32) |
指定された列の値をバイトとして取得します。 |
GetBytes(Int32, Int64, Byte[], Int32, Int32) |
指定した列オフセットから、指定したバッファー オフセットから始まるバイトのストリームを、配列としてバッファーに読み取ります。 |
GetChar(Int32) |
指定した列の値を文字として取得します。 |
GetChars(Int32, Int64, Char[], Int32, Int32) |
指定した列オフセットから、指定したバッファー オフセットから始まる文字列ストリームを、配列としてバッファーに読み取ります。 |
GetColumnSchemaAsync(CancellationToken) |
これは GetColumnSchema(DbDataReader) の非同期バージョンです。
プロバイダーは、適切な実装でオーバーライドする必要があります。
必要に応じて、 |
GetData(Int32) |
指定された列序数の IDataReader を返します。 |
GetData(Int32) |
要求された列に対して、入れ子になったデータ リーダーを返します。 (継承元 DbDataReader) |
GetDataTypeName(Int32) |
ソース データ型名を取得します。 |
GetDateTime(Int32) |
指定された列の値を |
GetDbDataReader(Int32) |
プロバイダー固有の実装でオーバーライドできる、要求された列序数に対応した DbDataReader オブジェクトを返します。 (継承元 DbDataReader) |
GetDecimal(Int32) |
指定された列の値を |
GetDouble(Int32) |
指定した列の値を倍精度浮動小数点数として取得します。 |
GetEnumerator() |
データ リーダー内の行に対して反復処理を行うために使用できる IEnumerator を返します。 |
GetFieldType(Int32) |
オブジェクトのデータ型である Type を取得します。 |
GetFieldValue<T>(Int32) |
要求された型として指定した列の値を取得します。 (継承元 DbDataReader) |
GetFieldValueAsync<T>(Int32, CancellationToken) |
要求された型として指定された列の値を非同期で取得します。 (継承元 DbDataReader) |
GetFieldValueAsync<T>(Int32) |
要求された型として指定された列の値を非同期で取得します。 (継承元 DbDataReader) |
GetFloat(Int32) |
指定した列の値を単精度浮動小数点数として取得します。 |
GetGuid(Int32) |
指定された列の値をグローバル一意識別子 (GUID) として取得します。 |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetInt16(Int32) |
指定した列の値を 16 ビット符号付き整数として取得します。 |
GetInt32(Int32) |
指定された列の値を 32 ビット符号付き整数として取得します。 |
GetInt64(Int32) |
指定された列の値を 64 ビット符号付き整数として取得します。 |
GetLifetimeService() |
古い.
対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。 (継承元 MarshalByRefObject) |
GetName(Int32) |
指定した列の名前を取得します。 |
GetOracleBFile(Int32) |
指定した列の値を OracleBFile オブジェクトとして取得します。 |
GetOracleBinary(Int32) |
指定した列の値を OracleBinary オブジェクトとして取得します。 |
GetOracleDateTime(Int32) |
指定した列の値を OracleDateTime オブジェクトとして取得します。 |
GetOracleLob(Int32) |
指定した列の値を OracleLob オブジェクトとして取得します。 |
GetOracleMonthSpan(Int32) |
指定した列の値を OracleMonthSpan オブジェクトとして取得します。 |
GetOracleNumber(Int32) |
指定した列の値を OracleNumber オブジェクトとして取得します。 |
GetOracleString(Int32) |
指定した列の値を OracleString オブジェクトとして取得します。 |
GetOracleTimeSpan(Int32) |
指定した列の値を OracleTimeSpan オブジェクトとして取得します。 |
GetOracleValue(Int32) |
指定した序数の列の値を Oracle の書式で取得します。 |
GetOracleValues(Object[]) |
現在の行のすべての属性列を Oracle の書式で取得します。 |
GetOrdinal(String) |
列の名前を指定して、列の序数を取得します。 |
GetProviderSpecificFieldType(Int32) |
基になるプロバイダー固有フィールド型の内部表現である |
GetProviderSpecificValue(Int32) |
基になるプロバイダー固有フィールド型の内部表現である |
GetProviderSpecificValues(Object[]) |
基になるプロバイダー固有の値の内部表現であるオブジェクトの配列を取得します。 |
GetSchemaTable() |
OracleDataReader の列メタデータを記述する DataTable を返します。 |
GetSchemaTableAsync(CancellationToken) |
これは GetSchemaTable() の非同期バージョンです。
プロバイダーは、適切な実装でオーバーライドする必要があります。
必要に応じて、 |
GetStream(Int32) |
指定された列からデータを取得する目的でストリームを取得します。 (継承元 DbDataReader) |
GetString(Int32) |
指定した列の値を文字列として取得します。 |
GetTextReader(Int32) |
列からデータを取得する目的でテキスト リーダーを取得します。 (継承元 DbDataReader) |
GetTimeSpan(Int32) |
指定した列の値を |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
GetValue(Int32) |
指定した序数の列の値をネイティブ形式で取得します。 |
GetValues(Object[]) |
オブジェクトの配列に現在行の列値を設定します。 |
InitializeLifetimeService() |
古い.
このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。 (継承元 MarshalByRefObject) |
IsDBNull(Int32) |
列に格納されている値が存在しない値または欠損値かどうかを示す値を取得します。 |
IsDBNullAsync(Int32, CancellationToken) |
列に格納されている値が存在しない値または欠損値かどうかを示す値を非同期で取得します。 (継承元 DbDataReader) |
IsDBNullAsync(Int32) |
列に格納されている値が存在しない値または欠損値かどうかを示す値を非同期で取得します。 (継承元 DbDataReader) |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
MemberwiseClone(Boolean) |
現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。 (継承元 MarshalByRefObject) |
NextResult() |
OracleDataReader を次の結果に進めます。 |
NextResultAsync() |
バッチ ステートメントの結果を読み取っているときに、次の結果にリーダーを非同期で進めます。 (継承元 DbDataReader) |
NextResultAsync(CancellationToken) |
バッチ ステートメントの結果を読み取っているときに、次の結果にリーダーを非同期で進めます。 (継承元 DbDataReader) |
Read() |
OracleDataReader を次のレコードに進めます。 |
ReadAsync() |
結果セット内の次のレコードにリーダーを非同期で進めます。 (継承元 DbDataReader) |
ReadAsync(CancellationToken) |
結果セット内の次のレコードにリーダーを非同期で進めます。 (継承元 DbDataReader) |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
明示的なインターフェイスの実装
IDataRecord.GetData(Int32) |
このメンバーの詳細については、「GetData(Int32)」をご覧ください。 (継承元 DbDataReader) |
IEnumerable.GetEnumerator() |
コレクションを反復処理する列挙子を返します。 |
拡張メソッド
CanGetColumnSchema(DbDataReader) |
DbDataReader が列スキーマを取得できるかどうかを示す値を取得します。 |
GetColumnSchema(DbDataReader) |
DbDataReader 用に、列のスキーマ (DbColumn コレクション) を取得します。 |
Cast<TResult>(IEnumerable) |
IEnumerable の要素を、指定した型にキャストします。 |
OfType<TResult>(IEnumerable) |
指定された型に基づいて IEnumerable の要素をフィルター処理します。 |
AsParallel(IEnumerable) |
クエリの並列化を有効にします。 |
AsQueryable(IEnumerable) |
IEnumerable を IQueryable に変換します。 |
適用対象
.NET