OracleLob Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 dieLOB
Daten in einer geöffneten Transaktion ändern, und Ihre Änderungen werden direkt in der Datenbank reflektiert. Wenn Sie den Oracle-WertLOB
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 einesLOB
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 LOB
abrufen. 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 LOB
zu aktualisieren, muss es in eine Transaktion eingeschlossen werden.
Im folgenden Beispiel wird veranschaulicht, wie ein temporärer LOB
geö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 LOB
s werden nur geschlossen, wenn die Verbindung geschlossen ist, aber bei Pooling und unter Last werden temporäre LOB
s nicht geschlossen. Dies kann behoben werden, indem Sie das temporäre LOB
verwerfen, indem Sie aufrufen tempLob.Dispose()
.
Felder
Null |
Stellt ein NULL-OracleLob-Objekt dar. |
Eigenschaften
CanRead |
Ruft einen Wert ab, der angibt, ob der |
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 |
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 |
Length |
Ruft einen Wert ab, der die Größe des OracleLob zurückgibt. |
LobType |
Ruft einen Wert ab, der den |
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 |
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- |
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) | |
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 |
ReadExactly(Span<Byte>) |
Liest Bytes aus dem aktuellen Stream und erhöht die Position innerhalb des Datenstroms, bis der |
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
Liest |
ReadExactlyAsync(Memory<Byte>, CancellationToken) |
Liest Bytes asynchron aus dem aktuellen Stream, erhöht die Position innerhalb des Datenstroms, bis der |
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. |