Bagikan melalui


OracleDataReader Kelas

Definisi

Menyediakan cara membaca aliran baris data khusus maju dari sumber data. Kelas ini tidak dapat diwariskan.

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
Warisan
OracleDataReader
Warisan
Penerapan

Contoh

Contoh berikut membuat OracleConnection, , OracleCommanddan OracleDataReader. Contohnya membaca data, menulisnya ke konsol. Akhirnya, contoh menutup OracleDataReader, lalu 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

Keterangan

Untuk membuat OracleDataReader, Anda harus memanggil ExecuteReader metode OracleCommand objek , daripada langsung menggunakan konstruktor.

Perubahan yang dilakukan pada hasil oleh proses atau utas lain saat data sedang dibaca mungkin terlihat oleh pengguna OracleDataReader.

IsClosed dan RecordsAffected adalah satu-satunya properti yang dapat Anda panggil setelah OracleDataReader ditutup. Dalam beberapa kasus, Anda harus menelepon Close sebelum dapat memanggil RecordsAffected.

Lebih dari satu OracleDataReader dapat dibuka pada waktu tertentu.

Dua contoh Visual Basic berikut menunjukkan cara menggunakan OracleDataReader untuk mengambil Oracle REF CURSOR. Contoh-contoh ini menggunakan tabel yang ditentukan dalam skema Oracle Scott/Tiger, dan memerlukan paket PL/SQL dan isi paket berikut. Anda harus membuat ini di server Anda untuk menggunakan contoh.

Buat paket Oracle berikut di server 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;  
/  

Buat isi paket Oracle berikut di server 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;  
/  

Contoh Visual Basic ini menjalankan prosedur tersimpan PL/SQL yang mengembalikan REF CURSOR parameter, dan membaca nilai sebagai 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  

Contoh Visual Basic ini menjalankan prosedur tersimpan PL/SQL yang mengembalikan dua REF CURSOR parameter, dan membaca nilai menggunakan 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  

Contoh C# ini membuat tabel Oracle dan memuatnya dengan data. Anda harus menjalankan contoh ini sebelum menjalankan contoh berikutnya, yang menunjukkan penggunaan OracleDataReader untuk mengakses data menggunakan struktur 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();  
   }  
}  

Contoh C# ini menggunakan OracleDataReader untuk mengakses data, dan menggunakan beberapa OracleType struktur untuk menampilkan data.

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();  
   }  
}  

Properti

Depth

Mendapatkan nilai yang menunjukkan kedalaman bersarang untuk baris saat ini.

FieldCount

Mendapatkan jumlah kolom di baris saat ini.

HasRows

Mendapatkan nilai yang menunjukkan apakah OracleDataReader berisi satu atau beberapa baris.

IsClosed

Menunjukkan apakah OracleDataReader ditutup.

Item[Int32]

Mendapatkan nilai kolom yang ditentukan dalam format aslinya mengingat kolom ordinal.

Item[String]

Mendapatkan nilai kolom yang ditentukan dalam format aslinya dengan nama kolom.

RecordsAffected

Mendapatkan jumlah baris yang diubah, disisipkan, atau dihapus oleh eksekusi pernyataan SQL.

VisibleFieldCount

Mendapatkan jumlah bidang dalam DbDataReader bidang yang tidak disembunyikan.

(Diperoleh dari DbDataReader)

Metode

Close()

OracleDataReader Menutup objek.

CloseAsync()

Menutup objek secara DbDataReader asinkron.

(Diperoleh dari DbDataReader)
CreateObjRef(Type)

Membuat objek yang berisi semua informasi relevan yang diperlukan untuk menghasilkan proksi yang digunakan untuk berkomunikasi dengan objek jarak jauh.

(Diperoleh dari MarshalByRefObject)
Dispose()

Melepaskan sumber daya yang digunakan oleh objek ini.

Dispose()

Merilis semua sumber daya yang digunakan oleh instans DbDataReader kelas saat ini.

(Diperoleh dari DbDataReader)
Dispose(Boolean)

Merilis sumber daya tidak terkelola yang DbDataReader digunakan oleh dan secara opsional merilis sumber daya terkelola.

(Diperoleh dari DbDataReader)
DisposeAsync()

Secara asinkron merilis semua sumber daya yang digunakan oleh instans DbDataReader kelas saat ini.

(Diperoleh dari DbDataReader)
Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetBoolean(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai Boolean.

GetByte(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai byte.

GetBytes(Int32, Int64, Byte[], Int32, Int32)

Membaca aliran byte dari offset kolom yang ditentukan ke dalam buffer sebagai array, dimulai pada offset buffer yang diberikan.

GetChar(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai karakter.

GetChars(Int32, Int64, Char[], Int32, Int32)

Membaca aliran karakter dari offset kolom yang ditentukan ke dalam buffer sebagai array, dimulai pada offset buffer yang diberikan.

GetColumnSchemaAsync(CancellationToken)

Ini adalah versi asinkron dari GetColumnSchema(DbDataReader). Penyedia harus mengambil alih dengan implementasi yang sesuai. Secara cancellationToken opsional dapat dihormati. Implementasi default memanggil panggilan sinkron GetColumnSchema(DbDataReader) dan mengembalikan tugas yang telah selesai. Implementasi default akan mengembalikan tugas yang dibatalkan jika lulus yang sudah dibatalkan cancellationToken. Pengecualian yang dilemparkan oleh GetColumnSchema(DbDataReader) akan dikomunikasikan melalui properti Pengecualian Tugas yang dikembalikan.

(Diperoleh dari DbDataReader)
GetData(Int32)

Mengembalikan IDataReader untuk ordinal kolom yang ditentukan.

GetData(Int32)

Mengembalikan pembaca data berlapis untuk kolom yang diminta.

(Diperoleh dari DbDataReader)
GetDataTypeName(Int32)

Mendapatkan nama jenis data sumber.

GetDateTime(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai DateTime objek.

GetDbDataReader(Int32)

DbDataReader Mengembalikan objek untuk ordinal kolom yang diminta yang dapat ditimpa dengan implementasi khusus penyedia.

(Diperoleh dari DbDataReader)
GetDecimal(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai Decimal objek.

GetDouble(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai angka titik mengambang presisi ganda.

GetEnumerator()

Mengembalikan yang IEnumerator dapat digunakan untuk mengulangi baris di pembaca data.

GetFieldType(Int32)

Type Mendapatkan yang merupakan jenis data objek.

GetFieldValue<T>(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai jenis yang diminta.

(Diperoleh dari DbDataReader)
GetFieldValueAsync<T>(Int32)

Secara asinkron mendapatkan nilai kolom yang ditentukan sebagai jenis yang diminta.

(Diperoleh dari DbDataReader)
GetFieldValueAsync<T>(Int32, CancellationToken)

Secara asinkron mendapatkan nilai kolom yang ditentukan sebagai jenis yang diminta.

(Diperoleh dari DbDataReader)
GetFloat(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai angka floating-point presisi tunggal.

GetGuid(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai pengidentifikasi unik global (GUID).

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetInt16(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai bilangan bulat bertanda 16-bit.

GetInt32(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai bilangan bulat bertanda tangan 32-bit.

GetInt64(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai bilangan bulat bertanda 64-bit.

GetLifetimeService()
Kedaluwarsa.

Mengambil objek layanan seumur hidup saat ini yang mengontrol kebijakan seumur hidup untuk instans ini.

(Diperoleh dari MarshalByRefObject)
GetName(Int32)

Mendapatkan nama kolom yang ditentukan.

GetOracleBFile(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai OracleBFile objek.

GetOracleBinary(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai OracleBinary objek.

GetOracleDateTime(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai OracleDateTime objek.

GetOracleLob(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai OracleLob objek.

GetOracleMonthSpan(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai OracleMonthSpan objek.

GetOracleNumber(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai OracleNumber objek.

GetOracleString(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai OracleString objek.

GetOracleTimeSpan(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai OracleTimeSpan objek.

GetOracleValue(Int32)

Mendapatkan nilai kolom pada ordinal yang ditentukan dalam format Oracle-nya.

GetOracleValues(Object[])

Mendapatkan semua kolom atribut dalam baris saat ini dalam format Oracle.

GetOrdinal(String)

Mendapatkan kolom ordinal, dengan nama kolom.

GetProviderSpecificFieldType(Int32)

Mendapatkan yang merupakan representasi dari jenis bidang tertentu penyedia yang mendasar Object .

GetProviderSpecificValue(Int32)

Mendapatkan yang merupakan representasi dari jenis bidang tertentu penyedia yang mendasar Object .

GetProviderSpecificValues(Object[])

Mendapatkan array objek yang merupakan representasi dari nilai spesifik penyedia yang mendasar.

GetSchemaTable()

Mengembalikan yang DataTable menjelaskan metadata kolom OracleDataReader.

GetSchemaTableAsync(CancellationToken)

Ini adalah versi asinkron dari GetSchemaTable(). Penyedia harus mengambil alih dengan implementasi yang sesuai. Secara cancellationToken opsional dapat dihormati. Implementasi default memanggil panggilan sinkron GetSchemaTable() dan mengembalikan tugas yang telah selesai. Implementasi default akan mengembalikan tugas yang dibatalkan jika lulus yang sudah dibatalkan cancellationToken. Pengecualian yang dilemparkan oleh GetSchemaTable() akan dikomunikasikan melalui properti Pengecualian Tugas yang dikembalikan.

(Diperoleh dari DbDataReader)
GetStream(Int32)

Mendapatkan aliran untuk mengambil data dari kolom yang ditentukan.

(Diperoleh dari DbDataReader)
GetString(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai string.

GetTextReader(Int32)

Mendapatkan pembaca teks untuk mengambil data dari kolom.

(Diperoleh dari DbDataReader)
GetTimeSpan(Int32)

Mendapatkan nilai kolom yang ditentukan sebagai System.TimeSpan.

GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
GetValue(Int32)

Mendapatkan nilai kolom pada ordinal yang ditentukan dalam format aslinya.

GetValues(Object[])

Mengisi array objek dengan nilai kolom baris saat ini.

InitializeLifetimeService()
Kedaluwarsa.

Mendapatkan objek layanan seumur hidup untuk mengontrol kebijakan seumur hidup untuk instans ini.

(Diperoleh dari MarshalByRefObject)
IsDBNull(Int32)

Mendapatkan nilai yang menunjukkan apakah kolom berisi nilai yang tidak ada atau hilang.

IsDBNullAsync(Int32)

Secara asinkron mendapatkan nilai yang menunjukkan apakah kolom berisi nilai yang tidak ada atau hilang.

(Diperoleh dari DbDataReader)
IsDBNullAsync(Int32, CancellationToken)

Secara asinkron mendapatkan nilai yang menunjukkan apakah kolom berisi nilai yang tidak ada atau hilang.

(Diperoleh dari DbDataReader)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
MemberwiseClone(Boolean)

Membuat salinan dangkal objek saat ini MarshalByRefObject .

(Diperoleh dari MarshalByRefObject)
NextResult()

Memajukan OracleDataReader ke hasil berikutnya.

NextResultAsync()

Secara asinkron memajukan pembaca ke hasil berikutnya saat membaca hasil batch pernyataan.

(Diperoleh dari DbDataReader)
NextResultAsync(CancellationToken)

Secara asinkron memajukan pembaca ke hasil berikutnya saat membaca hasil batch pernyataan.

(Diperoleh dari DbDataReader)
Read()

Memajukan OracleDataReader ke rekaman berikutnya.

ReadAsync()

Secara asinkron memajukan pembaca ke catatan berikutnya dalam kumpulan hasil.

(Diperoleh dari DbDataReader)
ReadAsync(CancellationToken)

Secara asinkron memajukan pembaca ke catatan berikutnya dalam kumpulan hasil.

(Diperoleh dari DbDataReader)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Implementasi Antarmuka Eksplisit

IDataRecord.GetData(Int32)

Untuk deskripsi anggota ini, lihat GetData(Int32).

(Diperoleh dari DbDataReader)
IEnumerable.GetEnumerator()

Mengembalikan enumerator yang melakukan iterasi melalui koleksi.

Metode Ekstensi

CanGetColumnSchema(DbDataReader)

Mendapatkan nilai yang menunjukkan apakah bisa DbDataReader mendapatkan skema kolom.

GetColumnSchema(DbDataReader)

Mendapatkan skema kolom (DbColumn koleksi) untuk DbDataReader.

Cast<TResult>(IEnumerable)

Mentransmisikan elemen dari IEnumerable ke jenis yang ditentukan.

OfType<TResult>(IEnumerable)

Memfilter elemen berdasarkan IEnumerable jenis tertentu.

AsParallel(IEnumerable)

Mengaktifkan paralelisasi kueri.

AsQueryable(IEnumerable)

Mengonversi menjadi IEnumerableIQueryable.

Berlaku untuk