OracleDataReader Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Ger ett sätt att läsa en dataström med endast framåtriktade rader från en datakälla. Det går inte att ärva den här klassen.
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
- Arv
- Arv
- Implementeringar
Exempel
I följande exempel skapas en OracleConnection, en OracleCommandoch en OracleDataReader. Exemplet läser igenom data och skriver ut dem till konsolen. Slutligen stänger OracleDataReaderexemplet , och sedan 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
Kommentarer
Om du vill skapa en OracleDataReadermåste du anropa ExecuteReader -metoden för OracleCommand objektet i stället för att direkt använda en konstruktor.
Ändringar som görs i en resultatuppsättning av en annan process eller tråd medan data läss kan vara synliga för användaren av OracleDataReader.
IsClosed och RecordsAffected är de enda egenskaper som du kan anropa när har OracleDataReader stängts. I vissa fall måste du ringa Close innan du kan anropa RecordsAffected.
Fler än en OracleDataReader kan vara öppen vid en viss tidpunkt.
Följande två Visual Basic exempel visar hur du använder en OracleDataReader för att hämta en Oracle REF CURSOR. De här exemplen använder tabeller som definieras i Oracle Scott/Tiger-schemat och kräver följande PL/SQL-paket och pakettext. Du måste skapa dessa på servern för att kunna använda exemplen.
Skapa följande Oracle-paket på Oracle-servern.
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;
/
Skapa följande Oracle-pakettext på Oracle-servern.
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;
/
Det här Visual Basic exemplet kör en PL/SQL-lagrad procedur som returnerar en parameter REF CURSOR och läser värdet som en 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
Det här Visual Basic exemplet kör en PL/SQL-lagrad procedur som returnerar två REF CURSOR parametrar och läser värdena med hjälp av en 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
Det här C#-exemplet skapar en Oracle-tabell och läser in den med data. Du måste köra det här exemplet innan du kör det efterföljande exemplet, som visar hur du använder en OracleDataReader för att komma åt data med hjälp av OracleType-strukturer.
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();
}
}
Det här C#-exemplet använder en OracleDataReader för att komma åt data och använder flera OracleType strukturer för att visa 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();
}
}
Egenskaper
| Name | Description |
|---|---|
| Depth |
Hämtar ett värde som anger djupet i kapslingen för den aktuella raden. |
| FieldCount |
Hämtar antalet kolumner i den aktuella raden. |
| HasRows |
Hämtar ett värde som anger om innehåller OracleDataReader en eller flera rader. |
| IsClosed |
Anger om är OracleDataReader stängd. |
| Item[Int32] |
Hämtar värdet för den angivna kolumnen i sitt interna format med tanke på kolumnens ordningstal. |
| Item[String] |
Hämtar värdet för den angivna kolumnen i sitt ursprungliga format givet kolumnnamnet. |
| RecordsAffected |
Hämtar antalet rader som har ändrats, infogats eller tagits bort genom körning av SQL-instruktionen. |
| VisibleFieldCount |
Hämtar antalet fält i DbDataReader som inte är dolda. (Ärvd från DbDataReader) |
Metoder
| Name | Description |
|---|---|
| Close() |
Stänger objektet OracleDataReader . |
| CreateObjRef(Type) |
Skapar ett objekt som innehåller all relevant information som krävs för att generera en proxy som används för att kommunicera med ett fjärrobjekt. (Ärvd från MarshalByRefObject) |
| Dispose() |
Frigör de resurser som används av det här objektet. |
| Dispose() |
Släpper alla resurser som används av den aktuella instansen DbDataReader av klassen. (Ärvd från DbDataReader) |
| Dispose(Boolean) |
Släpper de ohanterade resurser som används av DbDataReader och släpper eventuellt de hanterade resurserna. (Ärvd från DbDataReader) |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetBoolean(Int32) |
Hämtar värdet för den angivna kolumnen som booleskt värde. |
| GetByte(Int32) |
Hämtar värdet för den angivna kolumnen som byte. |
| GetBytes(Int32, Int64, Byte[], Int32, Int32) |
Läser en ström med byte från den angivna kolumnförskjutningen till bufferten som en matris, med början vid den angivna buffertförskjutningen. |
| GetChar(Int32) |
Hämtar värdet för den angivna kolumnen som ett tecken. |
| GetChars(Int32, Int64, Char[], Int32, Int32) |
Läser en dataström med tecken från den angivna kolumnförskjutningen till bufferten som en matris, med början vid den angivna buffertförskjutningen. |
| GetData(Int32) |
Returnerar en IDataReader för den angivna kolumnordningen. |
| GetData(Int32) |
Returnerar en kapslad dataläsare för den begärda kolumnen. (Ärvd från DbDataReader) |
| GetDataTypeName(Int32) |
Hämtar namnet på källdatatypen. |
| GetDateTime(Int32) |
Hämtar värdet för den angivna kolumnen som ett |
| GetDbDataReader(Int32) |
Returnerar ett DbDataReader objekt för den begärda kolumnordningen som kan åsidosättas med en providerspecifik implementering. (Ärvd från DbDataReader) |
| GetDecimal(Int32) |
Hämtar värdet för den angivna kolumnen som ett |
| GetDouble(Int32) |
Hämtar värdet för den angivna kolumnen som ett flyttal med dubbel precision. |
| GetEnumerator() |
Returnerar en IEnumerator som kan användas för att iterera genom raderna i dataläsaren. |
| GetFieldType(Int32) |
Type Hämtar objektets datatyp. |
| GetFieldValue<T>(Int32) |
Hämtar värdet för den angivna kolumnen som den begärda typen. (Ärvd från DbDataReader) |
| GetFieldValueAsync<T>(Int32, CancellationToken) |
Asynkront hämtar värdet för den angivna kolumnen som den begärda typen. (Ärvd från DbDataReader) |
| GetFieldValueAsync<T>(Int32) |
Asynkront hämtar värdet för den angivna kolumnen som den begärda typen. (Ärvd från DbDataReader) |
| GetFloat(Int32) |
Hämtar värdet för den angivna kolumnen som ett flyttal med enkel precision. |
| GetGuid(Int32) |
Hämtar värdet för den angivna kolumnen som en globalt unik identifierare (GUID). |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetInt16(Int32) |
Hämtar värdet för den angivna kolumnen som ett 16-bitars signerat heltal. |
| GetInt32(Int32) |
Hämtar värdet för den angivna kolumnen som ett 32-bitars signerat heltal. |
| GetInt64(Int32) |
Hämtar värdet för den angivna kolumnen som ett 64-bitars signerat heltal. |
| GetLifetimeService() |
Föråldrad.
Hämtar det aktuella livslängdstjänstobjektet som styr livslängdsprincipen för den här instansen. (Ärvd från MarshalByRefObject) |
| GetName(Int32) |
Hämtar namnet på den angivna kolumnen. |
| GetOracleBFile(Int32) |
Hämtar värdet för den angivna kolumnen som ett OracleBFile objekt. |
| GetOracleBinary(Int32) |
Hämtar värdet för den angivna kolumnen som ett OracleBinary objekt. |
| GetOracleDateTime(Int32) |
Hämtar värdet för den angivna kolumnen som ett OracleDateTime objekt. |
| GetOracleLob(Int32) |
Hämtar värdet för den angivna kolumnen som ett OracleLob objekt. |
| GetOracleMonthSpan(Int32) |
Hämtar värdet för den angivna kolumnen som ett OracleMonthSpan objekt. |
| GetOracleNumber(Int32) |
Hämtar värdet för den angivna kolumnen som ett OracleNumber objekt. |
| GetOracleString(Int32) |
Hämtar värdet för den angivna kolumnen som ett OracleString objekt. |
| GetOracleTimeSpan(Int32) |
Hämtar värdet för den angivna kolumnen som ett OracleTimeSpan objekt. |
| GetOracleValue(Int32) |
Hämtar värdet för kolumnen vid den angivna ordningstalet i sitt Oracle-format. |
| GetOracleValues(Object[]) |
Hämtar alla attributkolumner i den aktuella raden i Oracle-format. |
| GetOrdinal(String) |
Hämtar kolumnordningen med namnet på kolumnen. |
| GetProviderSpecificFieldType(Int32) |
Hämtar en |
| GetProviderSpecificValue(Int32) |
Hämtar en |
| GetProviderSpecificValues(Object[]) |
Hämtar en matris med objekt som är en representation av de underliggande providerspecifika värdena. |
| GetSchemaTable() |
Returnerar en DataTable som beskriver kolumnmetadata för OracleDataReader. |
| GetStream(Int32) |
Hämtar en dataström för att hämta data från den angivna kolumnen. (Ärvd från DbDataReader) |
| GetString(Int32) |
Hämtar värdet för den angivna kolumnen som en sträng. |
| GetTextReader(Int32) |
Hämtar en textläsare för att hämta data från kolumnen. (Ärvd från DbDataReader) |
| GetTimeSpan(Int32) |
Hämtar värdet för den angivna kolumnen som en |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| GetValue(Int32) |
Hämtar värdet för kolumnen i det angivna ordningstalet i sitt interna format. |
| GetValues(Object[]) |
Fyller i en matris med objekt med kolumnvärdena för den aktuella raden. |
| InitializeLifetimeService() |
Föråldrad.
Hämtar ett tjänstobjekt för livslängd för att styra livslängdsprincipen för den här instansen. (Ärvd från MarshalByRefObject) |
| IsDBNull(Int32) |
Hämtar ett värde som anger om kolumnen innehåller icke-existerande eller saknade värden. |
| IsDBNullAsync(Int32, CancellationToken) |
Asynkront hämtar ett värde som anger om kolumnen innehåller obefintliga eller saknade värden. (Ärvd från DbDataReader) |
| IsDBNullAsync(Int32) |
Asynkront hämtar ett värde som anger om kolumnen innehåller obefintliga eller saknade värden. (Ärvd från DbDataReader) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| MemberwiseClone(Boolean) |
Skapar en ytlig kopia av det aktuella MarshalByRefObject objektet. (Ärvd från MarshalByRefObject) |
| NextResult() |
OracleDataReader Går vidare till nästa resultat. |
| NextResultAsync() |
Asynkront avancerar läsaren till nästa resultat när du läser resultatet av en batch med instruktioner. (Ärvd från DbDataReader) |
| NextResultAsync(CancellationToken) |
Asynkront avancerar läsaren till nästa resultat när du läser resultatet av en batch med instruktioner. (Ärvd från DbDataReader) |
| Read() |
OracleDataReader Går vidare till nästa post. |
| ReadAsync() |
Asynkront avancerar läsaren till nästa post i en resultatuppsättning. (Ärvd från DbDataReader) |
| ReadAsync(CancellationToken) |
Asynkront avancerar läsaren till nästa post i en resultatuppsättning. (Ärvd från DbDataReader) |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |
Explicita gränssnittsimplementeringar
| Name | Description |
|---|---|
| IDataRecord.GetData(Int32) |
En beskrivning av den här medlemmen finns i GetData(Int32). (Ärvd från DbDataReader) |
| IEnumerable.GetEnumerator() |
Returnerar en uppräknare som itererar genom en samling. |
Tilläggsmetoder
| Name | Description |
|---|---|
| AsParallel(IEnumerable) |
Möjliggör parallellisering av en fråga. |
| AsQueryable(IEnumerable) |
Konverterar en IEnumerable till en IQueryable. |
| CanGetColumnSchema(DbDataReader) |
Hämtar ett värde som anger om en DbDataReader kan hämta ett kolumnschema. |
| Cast<TResult>(IEnumerable) |
Omvandlar elementen i en IEnumerable till den angivna typen. |
| GetColumnSchema(DbDataReader) |
Hämtar kolumnschemat (DbColumn samlingen) för en DbDataReader. |
| OfType<TResult>(IEnumerable) |
Filtrerar elementen i en IEnumerable baserat på en angiven typ. |