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
- 상속
- 상속
- 구현
예제
다음 예제에서는 , 및 를 OracleCommandOracleDataReader만듭니다OracleConnection. 이 예제에서는 데이터를 읽고 콘솔에 기록합니다. 마지막으로 이 예제에서는 를 닫은 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만들려면 생성자를 직접 사용하는 대신 개체의 OracleCommand 메서드를 호출 ExecuteReader 해야 합니다.
데이터를 읽는 동안 다른 프로세스 또는 스레드에 의한 결과 집합 변경 내용은 의 OracleDataReader사용자에게 표시될 수 있습니다.
IsClosed가 닫힌 후 호출할 수 있는 속성은 RecordsAffected 및 OracleDataReader뿐입니다. 경우에 따라 를 호출하기 전에 를 호출 CloseRecordsAffected해야 합니다.
지정된 시간에 둘 OracleDataReader 이상을 열 수 있습니다.
다음 두 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 예제에서는 두 개의 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에 하나 이상의 행이 있는지 여부를 나타내는 값을 가져옵니다. |
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) |
지정된 열의 값을 요청된 형식으로 비동기적으로 가져옵니다. (다음에서 상속됨 DbDataReader) |
GetFieldValueAsync<T>(Int32, CancellationToken) |
지정된 열의 값을 요청된 형식으로 비동기적으로 가져옵니다. (다음에서 상속됨 DbDataReader) |
GetFloat(Int32) |
지정된 열의 값을 단정밀도 부동 소수점 숫자로 가져옵니다. |
GetGuid(Int32) |
지정된 열의 값에 해당하는 GUID(Globally Unique ID)를 가져옵니다. |
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) |
열의 값이 존재하지 않거나 누락되었는지 여부를 나타내는 값을 비동기적으로 가져옵니다. (다음에서 상속됨 DbDataReader) |
IsDBNullAsync(Int32, CancellationToken) |
열의 값이 존재하지 않거나 누락되었는지 여부를 나타내는 값을 비동기적으로 가져옵니다. (다음에서 상속됨 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