Teilen über


OracleLob Klasse

Definition

Stellt den auf einem Oracle-Server gespeicherten Datentyp LOB (Large Object Binary) dar. Diese Klasse kann nicht vererbt werden.

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
Vererbung
Implementiert

Hinweise

Ein OracleLob unterscheidet sich von einem OracleBFile dadurch, dass die Daten auf dem Server und nicht in einer physischen Datei im Betriebssystem gespeichert werden. Es kann auch ein Lese-/Schreibobjekt sein, im Gegensatz zu einem OracleBFile, das immer schreibgeschützt ist.

Ein OracleLob kann einer dieser Datentypen OracleType sein.

OracleType-Datentyp BESCHREIBUNG
Blob Ein Oracle-Datentyp BLOB , der Binärdaten mit einer maximalen Größe von 4 GIGABYTE (GB) enthält. Wird einem Array vom Typ Byte zugeordnet.
Clob Ein Oracle-Datentyp CLOB , der Zeichendaten enthält, basierend auf dem Standardzeichensatz auf dem Server, mit einer maximalen Größe von 4 GB. Wird String zugeordnet.
NClob Ein Oracle-Datentyp NCLOB , der Zeichendaten enthält, basierend auf dem nationalen Zeichensatz auf dem Server mit einer maximalen Größe von 4 GB. Wird String zugeordnet.

Ein .NET-Anwendungsentwickler kann die Oracle-Werte LOB in grundlegende .NET-Datentypen abrufen, z Array . B. vom Typ Byte und String, oder dem spezialisierten OracleLob Datentyp. Die OracleLob -Klasse unterstützt das Lesen von Daten aus und das Schreiben in oracle LOB in der Oracle-Datenbank.

Im Folgenden sind die Standard Merkmale eines Datentyps OracleLob aufgeführt, die ihn von grundlegenden .NET-Datentypen unterscheiden:

  • Nachdem Sie den Oracle-Wert LOB aus der Oracle-Datenbank in die OracleLob -Klasse abgerufen haben, können Sie die LOB Daten in einer geöffneten Transaktion ändern, und Ihre Änderungen werden direkt in der Datenbank reflektiert. Wenn Sie den Oracle-Wert LOB in einen Array vom Typ Byte oder String abrufen und diese Arrays aktualisieren, werden Ihre Änderungen nicht in der Datenbank berücksichtigt.

  • Wenn Sie die OracleLob -Klasse verwenden, um auf einen Teil eines LOB Werts zuzugreifen, wird nur dieser Teil von der Oracle-Datenbank an den Client übergeben. Wenn Sie die GetChars -Methode verwenden, um auf einen Teil eines LOB Werts zuzugreifen, wird der gesamte Inhalt des Werts von der Oracle-Datenbank an den Client übergeben.

Um ein OracleLob Objekt abzurufen, rufen Sie die -Methode auf GetOracleLob .

Sie können ein OracleLob NULL-Objekt mit folgendem Format erstellen:

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

Dieses Verfahren wird hauptsächlich verwendet, um zu testen, ob eine LOB vom Server zurückgegebene NULL ist, wie dieses Beispiel veranschaulicht:

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

Ein NULL LOB verhält sich ähnlich wie ein Null-Byte LOB in, das Read erfolgreich ist und immer null Bytes zurückgibt.

Wenn Sie eine LOB Spalte auswählen, die einen NULL-Wert enthält, wird zurückgegeben Null.

Sie müssen eine Transaktion beginnen, bevor Sie einen temporären LOBabrufen. Andernfalls können die OracleDataReader Daten später möglicherweise nicht abgerufen werden.

Sie können auch eine temporäre LOB in Oracle öffnen, indem Sie den DBMS_LOB aufrufen. CREATETEMPORARY system gespeicherte Prozedur und Bindung eines Ausgabeparameters LOB . Auf der Clientseite verhält sich ein temporäres LOB wie ein tabellenbasiertes LOB. Um z. B. das temporäre LOBzu aktualisieren, muss es in eine Transaktion eingeschlossen werden.

Im folgenden Beispiel wird veranschaulicht, wie ein temporärer LOBgeöffnet wird:

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

Hinweis

Die geerbte Methode schlägt WriteByte fehl, wenn sie mit Zeichendaten verwendet wird, und ein InvalidOperationException wird ausgelöst. Verwenden Sie stattdessen die Write-Methode.

Temporäre LOBs werden nur geschlossen, wenn die Verbindung geschlossen ist, aber bei Pooling und unter Last werden temporäre LOBs nicht geschlossen. Dies kann behoben werden, indem Sie das temporäre LOBverwerfen, indem Sie aufrufen tempLob.Dispose().

Felder

Null

Stellt ein NULL-OracleLob-Objekt dar.

Eigenschaften

CanRead

Ruft einen Wert ab, der angibt, ob der LOB-Stream gelesen werden kann.

CanSeek

Ruft einen Wert ab, der angibt, ob Suchvorgänge vorwärts und rückwärts ausgeführt werden können.

CanTimeout

Ruft einen Wert ab, der bestimmt, ob für den aktuellen Stream ein Timeout möglich ist.

(Geerbt von Stream)
CanWrite

Gibt immer True zurück, unabhängig davon, ob das LOB Schreibvorgänge unterstützt.

ChunkSize

Ruft einen Wert ab, der die Mindestanzahl von Bytes angibt, die während einer Lese-/Schreiboperation vom Server abgerufen oder an diesen gesendet werden soll.

Connection

Ruft die von dieser Instanz von OracleConnection verwendete OracleLob ab.

IsBatched

Ruft einen Wert ab, der angibt, ob eine Anwendung die BeginBatch()-Methode aufgerufen hat.

IsNull

Ruft einen Wert ab, der angibt, ob OracleLob ein Null-Stream ist.

IsTemporary

Ruft einen Wert ab, der angibt, ob das OracleLob ein temporäres LOB ist.

Length

Ruft einen Wert ab, der die Größe des OracleLob zurückgibt.

LobType

Ruft einen Wert ab, der den LOB-Datentyp zurückgibt.

Position

Ruft die aktuelle Leseposition im OracleLob-Stream ab.

ReadTimeout

Ruft einen Wert in Millisekunden ab, der bestimmt, wie lange der Stream versucht, Lesevorgänge durchzuführen, bevor ein Timeout auftritt, oder legt diesen fest.

(Geerbt von Stream)
Value

Ruft die Streamwertentsprechung der Common Language Runtime für den zugrunde liegenden Wert ab.

WriteTimeout

Ruft einen Wert in Millisekunden ab, der bestimmt, wie lange der Stream versucht, Schreibvorgänge durchzuführen, bevor ein Timeout auftritt, oder legt diesen fest.

(Geerbt von Stream)

Methoden

Append(OracleLob)

Fügt Daten aus dem angegebenen LOB am aktuellen LOB an.

BeginBatch()

Verhindert, dass beim Ausführen mehrerer Lesevorgänge serverseitige Trigger ausgelöst werden.

BeginBatch(OracleLobOpenMode)

Verhindert, dass serverseitige Trigger ausgelöst werden, während im angegebenen Zugriffsmodus mehrere Lese- und Schreibvorgänge ausgeführt werden.

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

Beginnt einen asynchronen Lesevorgang. (Verwenden Sie stattdessen ReadAsync(Byte[], Int32, Int32).)

(Geerbt von Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Beginnt einen asynchronen Schreibvorgang. (Verwenden Sie stattdessen WriteAsync(Byte[], Int32, Int32).)

(Geerbt von Stream)
Clone()

Erstellt ein neues OracleLob-Objekt, das auf dasselbe Oracle-LOB wie das ursprüngliche OracleLob-Objekt verweist.

Close()

Schließt den aktuellen Stream und gibt alle dem Stream zugeordneten Ressourcen frei.

Close()

Schließt den aktuellen Stream und gibt alle dem aktuellen Stream zugeordneten Ressourcen frei (z. B. Sockets und Dateihandles). Anstatt diese Methode aufzurufen, stellen Sie sicher, dass der Stream ordnungsgemäß freigegeben wird.

(Geerbt von Stream)
CopyTo(Int64, OracleLob, Int64, Int64)

Kopiert die angegebene Datenmenge vom angegebenen Quelloffset dieses OracleLob in ein Ziel-OracleLob.

CopyTo(OracleLob)

Kopiert aus diesem OracleLob in ein Ziel-OracleLob.

CopyTo(OracleLob, Int64)

Kopiert die angegebene Datenmenge aus diesem OracleLob in ein Ziel-OracleLob.

CopyTo(Stream)

Liest alle Bytes aus dem aktuellen Stream und schreibt sie in einen anderen Datenstrom. Beide Streamspositionen werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CopyTo(Stream, Int32)

Liest alles Bytes aus dem aktuellen Datenstrom und schreibt sie unter Verwendung einer angegebenen Puffergröße in einen anderen Datenstrom. Beide Streamspositionen werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CopyToAsync(Stream)

Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie in einen anderen Stream. Beide Streamspositionen werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CopyToAsync(Stream, CancellationToken)

Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie unter Verwendung eines angegebenen Abbruchtokens in einen anderen Stream. Beide Streamspositionen werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CopyToAsync(Stream, Int32)

Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie unter Verwendung einer angegebenen Puffergröße in einen anderen Stream. Beide Streamspositionen werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie unter Verwendung einer angegebenen Puffergröße und eines Abbruchtokens in einen anderen Stream. Beide Streamspositionen werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CreateObjRef(Type)

Erstellt ein Objekt mit allen relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt erforderlich sind.

(Geerbt von MarshalByRefObject)
CreateWaitHandle()
Veraltet.
Veraltet.
Veraltet.

Reserviert ein WaitHandle-Objekt.

(Geerbt von Stream)
Dispose()

Gibt die vom Objekt verwendeten Ressourcen frei.

Dispose()

Gibt alle vom Stream verwendeten Ressourcen frei.

(Geerbt von Stream)
Dispose(Boolean)

Gibt die von Stream verwendeten nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei.

(Geerbt von Stream)
DisposeAsync()

Gibt die nicht verwalteten Ressourcen, die von der Stream verwendet werden, asynchron frei.

(Geerbt von Stream)
EndBatch()

Ermöglicht, nach dem Ausführen mehrerer Schreibvorgänge serverseitige Trigger ausgelöst werden.

EndRead(IAsyncResult)

Wartet, bis der ausstehende asynchrone Lesevorgang abgeschlossen ist. (Verwenden Sie stattdessen ReadAsync(Byte[], Int32, Int32).)

(Geerbt von Stream)
EndWrite(IAsyncResult)

Beendet einen asynchronen Schreibvorgang. (Verwenden Sie stattdessen WriteAsync(Byte[], Int32, Int32).)

(Geerbt von Stream)
Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
Erase()

Löscht alle Daten aus diesem OracleLob.

Erase(Int64, Int64)

Löscht die angegebene Datenmenge aus diesem OracleLob.

Flush()

Wird derzeit nicht unterstützt.

FlushAsync()

Löscht sämtliche Puffer für diesen Stream asynchron und veranlasst die Ausgabe aller gepufferten Daten an das zugrunde liegende Gerät.

(Geerbt von Stream)
FlushAsync(CancellationToken)

Löscht alle Puffer für diesen Stream asynchron und veranlasst die Ausgabe aller gepufferten Daten an das zugrunde liegende Gerät und überwacht Abbruchanforderungen.

(Geerbt von Stream)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetLifetimeService()
Veraltet.

Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinien für diese Instanz steuert.

(Geerbt von MarshalByRefObject)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
InitializeLifetimeService()
Veraltet.

Ruft ein Lebensdauerdienstobjekt zur Steuerung der Lebensdauerrichtlinie für diese Instanz ab.

(Geerbt von MarshalByRefObject)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
MemberwiseClone(Boolean)

Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts.

(Geerbt von MarshalByRefObject)
ObjectInvariant()
Veraltet.

Bietet Unterstützung für einen Contract.

(Geerbt von Stream)
Read(Byte[], Int32, Int32)

Liest eine Folge von Bytes aus dem aktuellen OracleLob-Stream und verschiebt die Position im Stream um die Anzahl der gelesen Bytes nach vorn.

Read(Span<Byte>)

Liest beim Überschreiben in einer abgeleiteten Klasse eine Folge von Bytes aus dem aktuellen Stream und erhöht die Position im Stream um die Anzahl der gelesenen Bytes.

(Geerbt von Stream)
ReadAsync(Byte[], Int32, Int32)

Liest eine Bytesequenz asynchron aus dem aktuellen Stream und setzt die Position in diesem Stream um die Anzahl der gelesenen Bytes nach vorn.

(Geerbt von Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Liest eine Folge von Bytes asynchron aus aktuellen Stream, erhöht die Position im Stream um die Anzahl der gelesenen Bytes und überwacht Abbruchanfragen.

(Geerbt von Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Liest eine Folge von Bytes asynchron aus aktuellen Stream, erhöht die Position im Stream um die Anzahl der gelesenen Bytes und überwacht Abbruchanfragen.

(Geerbt von Stream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

Liest mindestens eine Mindestanzahl von Bytes aus dem aktuellen Stream und erhöht die Position innerhalb des Datenstroms um die Anzahl der gelesenen Bytes.

(Geerbt von Stream)
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken)

Liest asynchron mindestens eine Mindestanzahl von Bytes aus dem aktuellen Stream, erhöht die Position innerhalb des Datenstroms um die Anzahl der gelesenen Bytes und überwacht Abbruchanforderungen.

(Geerbt von Stream)
ReadByte()

Liest ein Byte aus dem Stream und erhöht die Position im Stream um ein Byte, oder gibt -1 zurück, wenn das Ende des Streams erreicht ist.

(Geerbt von Stream)
ReadExactly(Byte[], Int32, Int32)

Liest count die Anzahl der Bytes aus dem aktuellen Stream und erhöht die Position innerhalb des Datenstroms.

(Geerbt von Stream)
ReadExactly(Span<Byte>)

Liest Bytes aus dem aktuellen Stream und erhöht die Position innerhalb des Datenstroms, bis der buffer gefüllt ist.

(Geerbt von Stream)
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken)

Liest count asynchron die Anzahl von Bytes aus dem aktuellen Stream, erhöht die Position im Stream und überwacht Abbruchanforderungen.

(Geerbt von Stream)
ReadExactlyAsync(Memory<Byte>, CancellationToken)

Liest Bytes asynchron aus dem aktuellen Stream, erhöht die Position innerhalb des Datenstroms, bis der buffer gefüllt ist, und überwacht Abbruchanforderungen.

(Geerbt von Stream)
Seek(Int64, SeekOrigin)

Legt die Position im aktuellen OracleLob-Stream fest.

SetLength(Int64)

Legt die Länge des OracleLob-Streams auf einen Wert fest, der kleiner als die aktuelle Länge ist.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
Write(Byte[], Int32, Int32)

Schreibt eine Folge von Bytes in den aktuellen OracleLob-Stream und verschiebt die aktuelle Position in diesem Stream um die Anzahl der geschrieben Bytes nach vorn.

Write(ReadOnlySpan<Byte>)

Schreibt beim Überschreiben in einer abgeleiteten Klasse eine Folge von Bytes in den aktuellen Stream und erhöht die aktuelle Position im Stream um die Anzahl der geschriebenen Bytes.

(Geerbt von Stream)
WriteAsync(Byte[], Int32, Int32)

Schreibt eine Bytesequenz asynchron in den aktuellen Stream und setzt die aktuelle Position in diesem Stream um die Anzahl der geschriebenen Bytes nach vorn.

(Geerbt von Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Schreibt beim Überschreiben in einer abgeleiteten Klasse eine Folge von Bytes asynchron in den aktuellen Stream und erhöht die aktuelle Position im Stream um die Anzahl der geschriebenen Bytes und überwacht Abbruchanforderungen.

(Geerbt von Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Schreibt beim Überschreiben in einer abgeleiteten Klasse eine Folge von Bytes asynchron in den aktuellen Stream und erhöht die aktuelle Position im Stream um die Anzahl der geschriebenen Bytes und überwacht Abbruchanforderungen.

(Geerbt von Stream)
WriteByte(Byte)

Schreibt ein Byte an die aktuelle Position im OracleLob-Stream und erhöht die aktuelle Position im Stream um ein Byte.

WriteByte(Byte)

Schreibt ein Byte an die aktuellen Position im Stream und erhöht die aktuelle Position im Stream um ein Byte.

(Geerbt von Stream)

Explizite Schnittstellenimplementierungen

IDisposable.Dispose()

Gibt alle vom Stream verwendeten Ressourcen frei.

(Geerbt von Stream)

Erweiterungsmethoden

CopyToAsync(Stream, PipeWriter, CancellationToken)

Liest die Bytes asynchron aus der Stream-Klasse und schreibt sie unter Verwendung eines Abbruchtokens in die angegebene PipeWriter-Klasse.

Gilt für: