OracleLob Klass

Definition

Representerar en stor datatyp för binärt objekt (LOB) som lagras på en Oracle-server. Det går inte att ärva den här klassen.

public ref class OracleLob sealed : System::IO::Stream, ICloneable, System::Data::SqlTypes::INullable
public sealed class OracleLob : System.IO.Stream, ICloneable, System.Data.SqlTypes.INullable
type OracleLob = class
    inherit Stream
    interface ICloneable
    interface IDisposable
    interface INullable
Public NotInheritable Class OracleLob
Inherits Stream
Implements ICloneable, INullable
Arv
Implementeringar

Kommentarer

En OracleLob skiljer sig från en OracleBFile i att data lagras på servern i stället för i en fysisk fil i operativsystemet. Det kan också vara ett skrivskyddat objekt, till skillnad från ett OracleBFile, som alltid är skrivskyddat.

En OracleLob kan vara en av dessa OracleType datatyper.

OracleType-datatyp Description
Blob En Oracle-datatyp BLOB som innehåller binära data med en maximal storlek på 4 gigabyte (GB). Detta mappar till en Array av typen Byte.
Clob En Oracle-datatyp CLOB som innehåller teckendata, baserat på standardteckenuppsättningen på servern, med en maximal storlek på 4 GB. Detta mappar till String.
NClob En Oracle-datatyp NCLOB som innehåller teckendata, baserat på det nationella tecken som angetts på servern med en maximal storlek på 4 GB. Detta mappar till String.

En .NET programutvecklare kan hämta Oracle LOB-värden till grundläggande .NET datatyper, till exempel Array av typen Byte och String eller den specialiserade datatypen OracleLob. Klassen OracleLob stöder läsning av data från och skrivning till Oracle LOB i Oracle-databasen.

Följande är de viktigaste egenskaperna för en OracleLob datatyp som skiljer den från grundläggande .NET datatyper:

  • När du har hämtat Oracle-värdet LOB från Oracle-databasen till OracleLob klassen kan du ändra LOB data i en öppen transaktion och dina ändringar återspeglas direkt i databasen. Om du hämtar Oracle-värdet LOB till en Array typ Byte eller String uppdaterar dessa matriser återspeglas inte dina ändringar i databasen.

  • När du använder OracleLob klassen för att komma åt ett segment av ett LOB värde skickas endast det segmentet från Oracle-databasen till klienten. När du använder GetChars metoden för att komma åt ett segment av ett LOB värde skickas hela innehållet i värdet från Oracle-databasen till klienten.

Anropa metoden för GetOracleLob att hämta ett OracleLob objekt.

Du kan skapa en OracleLob som är NULL med det här formatet:

OracleLob myLob = OracleLob.Null;
Dim myLob As OracleLob = OracleLob.Null

Den här tekniken används främst för att testa om en LOB som returneras från servern är NULL, vilket visas i det här exemplet:

if (myLob == OracleLob.Null)
If (myLob = OracleLob.Null) Then

En NULL LOB fungerar på samma sätt som en noll byte LOB i som Read lyckas och returnerar alltid noll byte.

Om du väljer en LOB kolumn som innehåller ett null-värde returneras Null.

Du måste påbörja en transaktion innan du hämtar en tillfällig LOB. Annars OracleDataReader kan det hända att data inte hämtas senare.

Du kan också öppna en tillfällig LOB i Oracle genom att anropa DBMS_LOB. CREATETEMPORARY systemlagringsprocedur och bindning av en LOB utdataparameter. På klientsidan fungerar en tillfällig LOB som en tabellbaserad LOB. Om du till exempel vill uppdatera den tillfälliga LOBmåste den omges av en transaktion.

I följande exempel visas hur du öppnar en tillfällig LOB:

var connection = new OracleConnection("server=MyServer; integrated security=yes;");
connection.Open();
OracleTransaction transaction = connection.BeginTransaction();
OracleCommand command = connection.CreateCommand();
command.Transaction = transaction;
command.CommandText = "declare xx blob; begin dbms_lob.createtemporary(xx, false, 0); :tempblob := xx; end;";
command.Parameters.Add(new OracleParameter("tempblob", OracleType.Blob)).Direction = ParameterDirection.Output;
command.ExecuteNonQuery();
var tempLob = (OracleLob)command.Parameters[0].Value;
var tempbuff = new byte[10000];
tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
tempLob.Write(tempbuff,0,tempbuff.Length);
tempLob.EndBatch();
command.Parameters.Clear();
command.CommandText = "MyTable.MyProc";
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new OracleParameter("ImportDoc", OracleType.Blob)).Value = tempLob;
command.ExecuteNonQuery();
transaction.Commit();
connection.Close();

Note

Den ärvda WriteByte metoden misslyckas om den används med teckendata och en InvalidOperationException genereras. Write Använd metoden i stället.

Tillfälliga LOBs stängs endast när anslutningen stängs, men med pooler och under belastning stängs inte tillfälliga LOBs. Detta kan lösas genom att ta bort den tillfälliga LOB, genom att tempLob.Dispose()anropa .

Fält

Name Description
Null

Representerar ett null-objekt OracleLob .

Egenskaper

Name Description
CanRead

Hämtar ett värde som anger om LOB strömmen kan läsas.

CanSeek

Hämtar ett värde som anger om åtgärder för framåt- och bakåtsökning kan utföras.

CanTimeout

Hämtar ett värde som avgör om den aktuella strömmen kan överskrida tidsgränsen.

(Ärvd från Stream)
CanWrite

Returnerar alltid sant, oavsett om stöder LOB skrivning eller inte.

ChunkSize

Hämtar ett värde som anger det minsta antalet byte som ska hämtas från eller skickas till servern under en läs-/skrivåtgärd.

Connection

Hämtar den OracleConnection som används av den här instansen OracleLobav .

IsBatched

Hämtar ett värde som anger om ett program som kallas BeginBatch() metoden.

IsNull

Hämtar ett värde som anger om OracleLob är en Null ström.

IsTemporary

Hämtar ett värde som anger om OracleLob är en tillfällig LOB.

Length

Hämtar ett värde som returnerar storleken på OracleLob.

LobType

Hämtar ett värde som returnerar LOB datatypen.

Position

Hämtar den aktuella läspositionen OracleLob i strömmen.

ReadTimeout

Hämtar eller anger ett värde i millisekunder som avgör hur länge strömmen ska försöka läsa innan tidsgränsen nås.

(Ärvd från Stream)
Value

Hämtar det vanliga språkkörningsströmvärdet som motsvarar det underliggande värdet.

WriteTimeout

Hämtar eller anger ett värde i millisekunder som avgör hur länge strömmen ska försöka skriva innan tidsgränsen nås.

(Ärvd från Stream)

Metoder

Name Description
Append(OracleLob)

Lägger till data från den angivna LOB till den aktuella LOB.

BeginBatch()

Förhindrar att utlösare på serversidan utlöses när flera läsåtgärder utförs.

BeginBatch(OracleLobOpenMode)

Förhindrar att utlösare på serversidan utlöses när flera läs- och skrivåtgärder utförs i det angivna åtkomstläget.

BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

Påbörjar en asynkron läsåtgärd. (Överväg att använda ReadAsync(Byte[], Int32, Int32) i stället.)

(Ärvd från Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Påbörjar en asynkron skrivåtgärd. (Överväg att använda WriteAsync(Byte[], Int32, Int32) i stället.)

(Ärvd från Stream)
Clone()

Skapar ett nytt OracleLob objekt som refererar till samma Oracle LOB som det ursprungliga OracleLob objektet.

Close()

Stänger den aktuella strömmen och släpper resurser som är associerade med strömmen.

Close()

Stänger den aktuella strömmen och släpper alla resurser (till exempel socketar och filhandtag) som är associerade med den aktuella strömmen. I stället för att anropa den här metoden kontrollerar du att dataströmmen tas bort korrekt.

(Ärvd från Stream)
CopyTo(Int64, OracleLob, Int64, Int64)

Kopierar från detta OracleLob till ett mål OracleLob med den angivna mängden data och källförskjutningen.

CopyTo(OracleLob, Int64)

Kopierar från detta OracleLob till ett mål OracleLob med den angivna mängden data.

CopyTo(OracleLob)

Kopierar från detta OracleLob till ett mål OracleLob.

CopyTo(Stream, Int32)

Läser byteen från den aktuella strömmen och skriver dem till en annan ström med en angiven buffertstorlek. Båda strömmarnas positioner avanceras av antalet kopierade byte.

(Ärvd från Stream)
CopyTo(Stream)

Läser byteen från den aktuella strömmen och skriver dem till en annan ström. Båda strömmarnas positioner avanceras av antalet kopierade byte.

(Ärvd från Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Läser asynkront byte från den aktuella strömmen och skriver dem till en annan dataström med en angiven buffertstorlek och annulleringstoken. Båda strömmarnas positioner avanceras av antalet kopierade byte.

(Ärvd från Stream)
CopyToAsync(Stream, Int32)

Läser asynkront byte från den aktuella strömmen och skriver dem till en annan ström med en angiven buffertstorlek. Båda strömmarnas positioner avanceras av antalet kopierade byte.

(Ärvd från Stream)
CopyToAsync(Stream)

Läser asynkront byte från den aktuella strömmen och skriver dem till en annan ström. Båda strömmarnas positioner avanceras av antalet kopierade byte.

(Ärvd från Stream)
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)
CreateWaitHandle()
Föråldrad.

Allokerar ett WaitHandle objekt.

(Ärvd från Stream)
Dispose()

Frigör de resurser som används av det här objektet.

Dispose()

Släpper alla resurser som används av Stream.

(Ärvd från Stream)
Dispose(Boolean)

Släpper de ohanterade resurser som används av Stream och släpper eventuellt de hanterade resurserna.

(Ärvd från Stream)
EndBatch()

Tillåter att utlösare på serversidan återupptar avfyrning efter att ha utfört flera skrivåtgärder.

EndRead(IAsyncResult)

Väntar på att den väntande asynkrona läsningen ska slutföras. (Överväg att använda ReadAsync(Byte[], Int32, Int32) i stället.)

(Ärvd från Stream)
EndWrite(IAsyncResult)

Avslutar en asynkron skrivåtgärd. (Överväg att använda WriteAsync(Byte[], Int32, Int32) i stället.)

(Ärvd från Stream)
Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
Erase()

Raderar alla data från den här OracleLob.

Erase(Int64, Int64)

Raderar den angivna mängden data från den här OracleLob.

Flush()

Stöds inte för närvarande.

FlushAsync()

Rensar asynkront alla buffertar för den här strömmen och gör att buffrade data skrivs till den underliggande enheten.

(Ärvd från Stream)
FlushAsync(CancellationToken)

Rensar asynkront alla buffertar för den här strömmen, gör att buffrade data skrivs till den underliggande enheten och övervakar begäranden om annullering.

(Ärvd från Stream)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetLifetimeService()

Hämtar det aktuella livslängdstjänstobjektet som styr livslängdsprincipen för den här instansen.

(Ärvd från MarshalByRefObject)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
InitializeLifetimeService()

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)
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)
ObjectInvariant()
Föråldrad.

Tillhandahåller stöd för en Contract.

(Ärvd från Stream)
Read(Byte[], Int32, Int32)

Läser en sekvens med byte från den aktuella OracleLob dataströmmen och flyttar positionen inom dataströmmen med antalet lästa byte.

ReadAsync(Byte[], Int32, Int32, CancellationToken)

Läser asynkront en sekvens med byte från den aktuella strömmen, avancerar positionen i strömmen med antalet lästa byte och övervakar begäranden om annullering.

(Ärvd från Stream)
ReadAsync(Byte[], Int32, Int32)

Läser asynkront en sekvens med byte från den aktuella strömmen och avancerar positionen i strömmen med antalet lästa byte.

(Ärvd från Stream)
ReadByte()

Läser en byte från strömmen och flyttar positionen i strömmen med en byte, eller returnerar -1 om i slutet av strömmen.

(Ärvd från Stream)
Seek(Int64, SeekOrigin)

Anger positionen på den aktuella OracleLob strömmen.

SetLength(Int64)

Anger dataströmmens OracleLob längd till ett värde som är mindre än den aktuella längden.

ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)
Write(Byte[], Int32, Int32)

Skriver en sekvens med byte till den aktuella OracleLob strömmen och avancerar den aktuella positionen i den här strömmen med antalet skrivna byte.

WriteAsync(Byte[], Int32, Int32, CancellationToken)

Skriver asynkront en sekvens med byte till den aktuella strömmen, avancerar den aktuella positionen i den här strömmen med antalet skrivna byte och övervakar begäranden om annullering.

(Ärvd från Stream)
WriteAsync(Byte[], Int32, Int32)

Skriver asynkront en sekvens med byte till den aktuella strömmen och avancerar den aktuella positionen i den här strömmen med antalet skrivna byte.

(Ärvd från Stream)
WriteByte(Byte)

Skriver en byte till den aktuella positionen i OracleLob strömmen och flyttar positionen inom dataströmmen med en byte.

WriteByte(Byte)

Skriver en byte till den aktuella positionen i strömmen och flyttar positionen inom strömmen med en byte.

(Ärvd från Stream)

Explicita gränssnittsimplementeringar

Name Description
IDisposable.Dispose()

Släpper alla resurser som används av Stream.

(Ärvd från Stream)

Gäller för