OracleLob Classe

Définition

Représente un type de données Large Object Binary (LOB) stocké sur un serveur Oracle.Represents a large object binary (LOB) data type stored on an Oracle server. Cette classe ne peut pas être héritée.This class cannot be inherited.

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
Héritage
Implémente

Remarques

Une OracleLob diffère d’une OracleBFile dans le fait que les données sont stockées sur le serveur plutôt que dans un fichier physique dans le système d’exploitation.An OracleLob differs from an OracleBFile in that the data is stored on the server instead of in a physical file in the operating system. Il peut également s’agir d’un objet en lecture-écriture, contrairement à un OracleBFile, qui est toujours en lecture seule.It can also be a read-write object, unlike an OracleBFile, which is always read-only.

Un OracleLob peut être l’un des types de données OracleType.An OracleLob may be one of these OracleType data types.

Type de données OracleTypeOracleType data type DescriptionDescription
Blob Type de données Oracle BLOB qui contient des données binaires d’une taille maximale de 4 gigaoctets (Go).An Oracle BLOB data type that contains binary data with a maximum size of 4 gigabytes (GB). Correspond à un Array de type Byte.This maps to an Array of type Byte.
Clob Type de données Oracle CLOB qui contient des données caractères, en fonction du jeu de caractères par défaut sur le serveur, avec une taille maximale de 4 Go.An Oracle CLOB data type that contains character data, based on the default character set on the server, with a maximum size of 4 GB. Correspond à String.This maps to String.
NClob Type de données Oracle NCLOB qui contient des données caractères, en fonction du jeu de caractères national sur le serveur, avec une taille maximale de 4 Go.An Oracle NCLOB data type that contains character data, based on the national character set on the server with a maximum size of 4 GB. Correspond à String.This maps to String.

Un développeur d’applications .NET peut récupérer les valeurs d' LOB Oracle dans des types de données .NET de base, tels que Array de type Byte et String, ou le type de données OracleLob spécialisé.A .NET application developer can retrieve the Oracle LOB values into basic .NET data types, such as Array of type Byte and String, or the specialized OracleLob data type. La classe OracleLob prend en charge la lecture et l’écriture de données dans la LOB Oracle de la base de données Oracle.The OracleLob class supports reading data from and writing to the Oracle LOB in the Oracle database.

Les caractéristiques principales d’un type de données OracleLob qui le distinguent des types de données .NET de base sont les suivantes :The following are the main characteristics of an OracleLob data type that distinguish it from basic .NET data types:

  • Après avoir récupéré la valeur de LOB Oracle de la base de données Oracle dans la classe OracleLob, vous pouvez modifier les données de LOB dans une transaction ouverte et vos modifications sont directement reflétées dans la base de données.After you retrieve the Oracle LOB value from the Oracle database into the OracleLob class, you can change the LOB data in an open transaction and your changes are directly reflected to the database. Si vous récupérez la valeur Oracle LOB dans un Array de type Byte ou String et mettez à jour ces tableaux, vos modifications ne sont pas reflétées dans la base de données.If you retrieve the Oracle LOB value into an Array of type Byte or String and update these arrays, your changes are not reflected to the database.

  • Lorsque vous utilisez la classe OracleLob pour accéder à un segment d’une valeur LOB, seul ce segment est passé de la base de données Oracle au client.When you use the OracleLob class to access a chunk of a LOB value, only that chunk is passed from the Oracle database to the client. Lorsque vous utilisez la méthode GetChars pour accéder à un bloc d’une valeur LOB, le contenu entier de la valeur est passé de la base de données Oracle au client.When you use the GetChars method to access a chunk of a LOB value, the entire contents of the value are passed from the Oracle database to the client.

Pour obtenir un objet OracleLob, appelez la méthode GetOracleLob.To obtain an OracleLob object, call the GetOracleLob method.

Vous pouvez construire un OracleLob dont la valeur est NULL à l’aide de ce format :You can construct an OracleLob that is NULL using this format:

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

Cette technique est principalement utilisée pour tester si un LOB retourné à partir du serveur a la valeur NULL, comme l’illustre cet exemple :This technique is used primarily to test whether a LOB returned from the server is NULL, as this example illustrates:

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

Une LOB NULL se comporte de la même façon qu’une LOB de zéro octet dans cette Read réussie et retourne toujours zéro octet.A NULL LOB behaves similarly to a zero-byte LOB in that Read succeeds and always returns zero bytes.

La sélection d’une colonne LOB qui contient une valeur null retourne Null.Selecting a LOB column that contains a null value returns Null.

Vous devez commencer une transaction avant d’obtenir un LOBtemporaire.You must begin a transaction before obtaining a temporary LOB. Dans le cas contraire, le OracleDataReader risque d’échouer à obtenir des données ultérieurement.Otherwise, the OracleDataReader may fail to obtain data later.

Vous pouvez également ouvrir un LOB temporaire dans Oracle en appelant l’DBMS_LOB. Procédure stockée système CREATETEMPORARY et liaison d’un paramètre de sortie LOB.You can also open a temporary LOB in Oracle by calling the DBMS_LOB.CREATETEMPORARY system stored procedure and binding a LOB output parameter. Côté client, un LOB temporaire se comporte comme une LOBbasée sur une table.On the client side, a temporary LOB behaves like a table-based LOB. Par exemple, pour mettre à jour le LOBtemporaire, il doit être placé dans une transaction.For example, to update the temporary LOB, it must be enclosed in a transaction.

L’exemple suivant montre comment ouvrir un LOBtemporaire :The following example demonstrates how to open a temporary 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(); 

Notes

La méthode WriteByte héritée échoue si elle est utilisée avec des données de caractères, et une InvalidOperationException est levée.The inherited WriteByte method fails if used with character data, and an InvalidOperationException is thrown. Utilisez plutôt la méthode Write.Use the Write method instead.

Les LOBtemporaires sont fermés uniquement lorsque la connexion est fermée, mais avec le regroupement et sous charge, les LOBs temporaires ne se ferment pas.Temporary LOBs are only closed when the connection is closed, but with pooling and under load, temporary LOBs do not close. Cela peut être résolu en supprimant le LOBtemporaire, en appelant tempLob.Dispose().This can be resolved by disposing the temporary LOB, by invoking tempLob.Dispose().

Champs

Null

Représente un objet OracleLob null.Represents a null OracleLob object.

Propriétés

CanRead

Obtient une valeur indiquant si le flux LOB peut être lu.Gets a value indicating whether the LOB stream can be read.

CanSeek

Obtient une valeur indiquant si des opérations de recherche vers l'avant ou vers l'arrière peuvent être effectuées.Gets a value indicating whether forward and backward seek operations can be performed.

CanTimeout

Obtient une valeur qui détermine si le flux actuel peut dépasser le délai d'attente.Gets a value that determines whether the current stream can time out.

(Hérité de Stream)
CanWrite

Retourne toujours la valeur true, que LOB prenne en charge l'écriture ou non.Always returns true, regardless of whether the LOB supports writing or not.

ChunkSize

Obtient une valeur indiquant le nombre minimal d'octets à récupérer du serveur ou à envoyer à celui-ci au cours d'une opération de lecture/écriture.Gets a value indicating the minimum number of bytes to retrieve from or send to the server during a read/write operation.

Connection

Obtient le OracleConnection utilisé par cette instance de OracleLob.Gets the OracleConnection used by this instance of the OracleLob.

IsBatched

Obtient une valeur indiquant si une application a appelé BeginBatch().Gets a value indicating whether an application called the BeginBatch() method.

IsNull

Obtient une valeur qui indique si OracleLob est un flux Null.Gets a value that indicates whether the OracleLob is a Null stream.

IsTemporary

Obtient une valeur indiquant si OracleLob est un LOB temporaire.Gets a value indicating whether the OracleLob is a temporary LOB.

Length

Obtient une valeur qui retourne la taille de OracleLob.Gets a value that returns the size of the OracleLob.

LobType

Obtient une valeur qui retourne le type de données LOB.Gets a value that returns the LOB data type.

Position

Obtient la position de lecture actuelle dans le flux OracleLob.Gets the current read position in the OracleLob stream.

ReadTimeout

Obtient ou définit une valeur, exprimée en millisecondes, qui définit la durée pendant laquelle le flux tentera d’effectuer la lecture avant dépassement du délai d’attente.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out.

(Hérité de Stream)
Value

Obtient la valeur du flux Common Language Runtime équivalente à la valeur sous-jacente.Gets the common language runtime stream value equivalent of the underlying value.

WriteTimeout

Obtient ou définit une valeur, exprimée en millisecondes, qui définit la durée pendant laquelle le flux tentera d’écrire des données avant l’expiration du délai d’attente.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out.

(Hérité de Stream)

Méthodes

Append(OracleLob)

Ajoute des données à partir du LOB spécifié au LOB en cours.Appends data from the specified LOB to the current LOB.

BeginBatch()

Empêche les déclencheurs côté serveur de s'activer lors d'opérations de lecture multiples.Prevents server-side triggers from firing while performing multiple read operations.

BeginBatch(OracleLobOpenMode)

Empêche les déclencheurs côté serveur de s'activer lors d'opérations de lecture et d'écriture dans le mode d'accès spécifié.Prevents server-side triggers from firing while performing multiple read and write operations in the specified access mode.

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

Commence une opération de lecture asynchrone.Begins an asynchronous read operation. (Utilisez ReadAsync(Byte[], Int32, Int32) à la place.)(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(Hérité de Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Commence une opération d'écriture asynchrone.Begins an asynchronous write operation. (Utilisez WriteAsync(Byte[], Int32, Int32) à la place.)(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(Hérité de Stream)
Clone()

Crée un objet OracleLob qui référence le même objet LOB Oracle que l'objet OracleLob d'origine.Creates a new OracleLob object that references the same Oracle LOB as the original OracleLob object.

Close()

Ferme le flux de données actuel et libère toutes les ressources système qui lui sont associées.Closes the current stream and releases resources that are associated with the stream.

CopyTo(Int64, OracleLob, Int64, Int64)

Copie de cet objet OracleLob vers l'objet OracleLob de destination avec la quantité de données spécifiée et l'offset source.Copies from this OracleLob to a destination OracleLob with the specified amount of data, and the source offset.

CopyTo(OracleLob)

Copie de OracleLob vers un OracleLob de destination.Copies from this OracleLob to a destination OracleLob.

CopyTo(OracleLob, Int64)

Copie les données de l'objet OracleLob vers un objet OracleLob de destination avec la quantité de données spécifiée.Copies from this OracleLob to a destination OracleLob with the specified amount of data.

CopyTo(ReadOnlySpanAction<Byte,Object>, Object, Int32) (Hérité de Stream)
CopyTo(Stream)

Lit les octets du flux actuel et les écrit dans un autre flux.Reads the bytes from the current stream and writes them to another stream.

(Hérité de Stream)
CopyTo(Stream, Int32)

Lit tous les octets du flux actuel et les écrit dans un autre flux, en utilisant une taille de mémoire tampon spécifiée.Reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Hérité de Stream)
CopyToAsync(Func<ReadOnlyMemory<Byte>,Object,CancellationToken,ValueTask>, Object, Int32, CancellationToken) (Hérité de Stream)
CopyToAsync(Stream)

Lit de façon asynchrone tous les octets du flux actuel et les écrit dans un autre flux.Asynchronously reads the bytes from the current stream and writes them to another stream.

(Hérité de Stream)
CopyToAsync(Stream, CancellationToken)

Lit de façon asynchrone les octets du flux actuel et les écrit dans un autre flux, en utilisant un jeton d’annulation spécifié.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token.

(Hérité de Stream)
CopyToAsync(Stream, Int32)

Lit de façon asynchrone tous les octets du flux actuel et les écrit dans un autre flux, en utilisant une taille de mémoire tampon spécifiée.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Hérité de Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Lit de façon asynchrone les octets du flux actuel et les écrit dans un autre flux, en utilisant une taille de mémoire tampon et d'un jeton d'annulation spécifiés.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size and cancellation token.

(Hérité de Stream)
CreateObjRef(Type)

Crée un objet contenant toutes les informations appropriées requises pour générer un proxy permettant de communiquer avec un objet distant.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Hérité de MarshalByRefObject)
CreateWaitHandle()

Alloue un objet WaitHandle.Allocates a WaitHandle object.

(Hérité de Stream)
Dispose()

Libère les ressources utilisées par cet objet.Releases the resources that are used by this object.

Dispose(Boolean)

Libère les ressources non managées utilisées par Stream et libère éventuellement les ressources managées.Releases the unmanaged resources used by the Stream and optionally releases the managed resources.

(Hérité de Stream)
DisposeAsync()

Libère de façon asynchrone les ressources non managées utilisées par Stream.Asynchronously releases the unmanaged resources used by the Stream.

(Hérité de Stream)
EndBatch()

Empêche les déclencheurs côté serveur de reprendre leur activité après des opérations d'écriture multiples.Allows server-side triggers to resume firing after performing multiple write operations.

EndRead(IAsyncResult)

Attend la fin de la lecture asynchrone en attente.Waits for the pending asynchronous read to complete. (Utilisez ReadAsync(Byte[], Int32, Int32) à la place.)(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(Hérité de Stream)
EndWrite(IAsyncResult)

Termine une opération d'écriture asynchrone.Ends an asynchronous write operation. (Utilisez WriteAsync(Byte[], Int32, Int32) à la place.)(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(Hérité de Stream)
Equals(Object)

Détermine si l'objet spécifié est identique à l'objet actuel.Determines whether the specified object is equal to the current object.

(Hérité de Object)
Erase()

Efface toutes les données de OracleLob.Erases all data from this OracleLob.

Erase(Int64, Int64)

Efface la quantité de données spécifiée dans OracleLob.Erases the specified amount of data from this OracleLob.

Flush()

Non pris en charge actuellement.Not currently supported.

FlushAsync()

Efface de façon asynchrone toutes les mémoires tampons pour ce flux et provoque l'écriture des données mises en mémoire tampon sur l'appareil sous-jacent.Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.

(Hérité de Stream)
FlushAsync(CancellationToken)

Efface de façon asynchrone toutes les mémoires tampons pour ce flux, provoque l'écriture des données mises en mémoire tampon sur l'appareil sous-jacent et surveille les requêtes d'annulation.Asynchronously clears all buffers for this stream, causes any buffered data to be written to the underlying device, and monitors cancellation requests.

(Hérité de Stream)
GetHashCode()

Fait office de fonction de hachage par défaut.Serves as the default hash function.

(Hérité de Object)
GetLifetimeService()

Récupère l'objet de service de durée de vie en cours qui contrôle la stratégie de durée de vie de cette instance.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Hérité de MarshalByRefObject)
GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Hérité de Object)
InitializeLifetimeService()

Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance.Obtains a lifetime service object to control the lifetime policy for this instance.

(Hérité de MarshalByRefObject)
MemberwiseClone()

Crée une copie superficielle du Object actuel.Creates a shallow copy of the current Object.

(Hérité de Object)
MemberwiseClone(Boolean)

Crée une copie superficielle de l'objet MarshalByRefObject actuel.Creates a shallow copy of the current MarshalByRefObject object.

(Hérité de MarshalByRefObject)
ObjectInvariant()

Assure la prise en charge d'un Contract.Provides support for a Contract.

(Hérité de Stream)
Read(Byte[], Int32, Int32)

Lit une séquence d'octets à partir du flux OracleLob actuel et avance la position dans le flux du nombre d'octets lus.Reads a sequence of bytes from the current OracleLob stream and advances the position within the stream by the number of bytes read.

Read(Span<Byte>)

En cas de remplacement dans une classe dérivée, lit une séquence d'octets dans le flux actuel et avance la position dans le flux du nombre d'octets lus.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(Hérité de Stream)
ReadAsync(Byte[], Int32, Int32)

Lit de façon asynchrone une séquence d'octets dans le flux actuel et avance la position dans le flux du nombre d'octets lus.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(Hérité de Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Lit de façon asynchrone une séquence d'octets dans le flux actuel, avance la position dans le flux du nombre d'octets lus et surveille les demandes d'annulation.Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

(Hérité de Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Lit de façon asynchrone une séquence d'octets dans le flux actuel, avance la position dans le flux du nombre d'octets lus et surveille les demandes d'annulation.Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

(Hérité de Stream)
ReadByte()

Lit un octet du flux et avance d'un octet la position au sein du flux, ou retourne -1 si la fin du flux a été atteinte.Reads a byte from the stream and advances the position within the stream by one byte, or returns -1 if at the end of the stream.

(Hérité de Stream)
Seek(Int64, SeekOrigin)

Définit la position dans le flux OracleLob actuel.Sets the position on the current OracleLob stream.

SetLength(Int64)

Définit la longueur du flux OracleLob selon une valeur inférieure à la longueur actuelle.Sets the length of the OracleLob stream to a value less than the current length.

ToString()

Retourne une chaîne qui représente l'objet actuel.Returns a string that represents the current object.

(Hérité de Object)
Write(Byte[], Int32, Int32)

Écrit une suite d'octets dans le flux OracleLob actuel et avance la position actuelle dans ce flux du nombre d'octets écrits.Writes a sequence of bytes to the current OracleLob stream, and advances the current position within this stream by the number of bytes written.

Write(ReadOnlySpan<Byte>)

En cas de remplacement dans une classe dérivée, écrit une séquence d'octets dans le flux actuel et avance la position actuelle dans ce flux du nombre d'octets écrits.When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(Hérité de Stream)
WriteAsync(Byte[], Int32, Int32)

Écrit de façon asynchrone une séquence d'octets dans le flux actuel et avance la position actuelle dans le flux du nombre d'octets écrits.Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(Hérité de Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Écrit de façon asynchrone une séquence d'octets dans le flux actuel, avance la position actuelle dans ce flux du nombre d'octets écrits et surveille les demandes d'annulation.Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests.

(Hérité de Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Écrit de façon asynchrone une séquence d'octets dans le flux actuel, avance la position actuelle dans ce flux du nombre d'octets écrits et surveille les demandes d'annulation.Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests.

(Hérité de Stream)
WriteByte(Byte)

Écrit un octet à la position actuelle dans le flux OracleLob et avance d'un octet la position dans flux.Writes a byte to the current position in the OracleLob stream, and advances the position within the stream by one byte.

Implémentations d’interfaces explicites

IDisposable.Dispose()

Libère toutes les ressources utilisées par Stream.Releases all resources used by the Stream.

(Hérité de Stream)

S’applique à