Partager via


OracleLob Classe

Définition

Représente un type de données Large Object Binary (LOB) stocké sur un serveur Oracle. Cette classe ne peut pas être héritée.

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

Un OracleLob diffère d’un OracleBFile en ce que les données sont stockées sur le serveur plutôt que dans un fichier physique dans le système d’exploitation. Il peut également s’agir d’un objet en lecture-écriture, contrairement à un OracleBFile, qui est toujours en lecture seule.

Un OracleLob peut être l’un de ces OracleType types de données.

Type de données OracleType Description
Blob Type de données Oracle BLOB qui contient des données binaires d’une taille maximale de 4 gigaoctets (Go). Correspond à un Array de type Byte.
Clob Type de données Oracle CLOB qui contient des données de caractères, basé sur le jeu de caractères par défaut sur le serveur, avec une taille maximale de 4 Go. Correspond à String.
NClob Type de données Oracle NCLOB qui contient des données de caractères, basé sur le jeu de caractères national sur le serveur avec une taille maximale de 4 Go. Correspond à String.

Un développeur d’applications .NET peut récupérer les valeurs Oracle LOB dans des types de données .NET de base, tels que Array le type Byte et String, ou le type de données spécialisé OracleLob . La OracleLob classe prend en charge la lecture des données à partir de et l’écriture dans Oracle LOB dans la base de données Oracle.

Voici les caractéristiques main d’un OracleLob type de données qui le distinguent des types de données .NET de base :

  • Une fois que vous avez récupéré la valeur Oracle LOB de la base de données Oracle dans la OracleLob classe, vous pouvez modifier les LOB données d’une transaction ouverte et vos modifications sont directement reflétées dans la base de données. 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.

  • Lorsque vous utilisez la OracleLob classe pour accéder à un segment d’une LOB valeur, seul ce segment est passé de la base de données Oracle au client. Lorsque vous utilisez la GetChars méthode pour accéder à un segment d’une LOB valeur, le contenu entier de la valeur est passé de la base de données Oracle au client.

Pour obtenir un OracleLob objet, appelez la GetOracleLob méthode .

Vous pouvez construire un qui a la OracleLob valeur NULL à l’aide de ce 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 :

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

Une valeur NULL LOB se comporte de la même manière qu’un octet zéro LOB dans qui Read réussit et retourne toujours zéro octet.

La sélection d’une LOB colonne qui contient une valeur null retourne Null.

Vous devez commencer une transaction avant d’obtenir un temporaire LOB. Dans le cas contraire, le OracleDataReader risque d’échouer à obtenir des données ultérieurement.

Vous pouvez également ouvrir un temporaire LOB dans Oracle en appelant le DBMS_LOB. CREATETEMPORARY, procédure stockée système et liaison d’un LOB paramètre de sortie. Côté client, un temporaire LOB se comporte comme une table LOB. Par exemple, pour mettre à jour le temporaire LOB, il doit être placé dans une transaction.

L’exemple suivant montre comment ouvrir un temporaire 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 héritée WriteByte échoue si elle est utilisée avec des données de caractères, et un InvalidOperationException est levée. Utilisez plutôt la méthode Write.

Les s temporaires LOBsont fermés uniquement lorsque la connexion est fermée, mais avec le regroupement et la sous-charge, les s temporaires LOBne se ferment pas. Cela peut être résolu en éliminant le temporaire LOB, en appelant tempLob.Dispose().

Champs

Null

Représente un objet OracleLob null.

Propriétés

CanRead

Obtient une valeur indiquant si le flux LOB peut être lu.

CanSeek

Obtient une valeur indiquant si des opérations de recherche vers l'avant ou vers l'arrière peuvent être effectuées.

CanTimeout

Obtient une valeur qui détermine si le flux actuel peut dépasser le délai d'attente.

(Hérité de Stream)
CanWrite

Retourne toujours la valeur true, que LOB prenne en charge l'écriture ou non.

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.

Connection

Obtient le OracleConnection utilisé par cette instance de OracleLob.

IsBatched

Obtient une valeur indiquant si une application a appelé BeginBatch().

IsNull

Obtient une valeur qui indique si OracleLob est un flux Null.

IsTemporary

Obtient une valeur indiquant si OracleLob est un LOB temporaire.

Length

Obtient une valeur qui retourne la taille de OracleLob.

LobType

Obtient une valeur qui retourne le type de données LOB.

Position

Obtient la position de lecture actuelle dans le flux OracleLob.

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.

(Hérité de Stream)
Value

Obtient la valeur du flux Common Language Runtime équivalente à la valeur sous-jacente.

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.

(Hérité de Stream)

Méthodes

Append(OracleLob)

Ajoute des données à partir du LOB spécifié au LOB en cours.

BeginBatch()

Empêche les déclencheurs côté serveur de s'activer lors d'opérations de lecture multiples.

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é.

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

Débute une opération de lecture asynchrone. (Utilisez ReadAsync(Byte[], Int32, Int32) à la place.)

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

Débute une opération d'écriture asynchrone. (Utilisez WriteAsync(Byte[], Int32, Int32) à la place.)

(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.

Close()

Ferme le flux de données actuel et libère toutes les ressources système qui lui sont associées.

Close()

Ferme le flux actuel et libère toutes les ressources (comme les sockets et les handles de fichiers) associées à celui-ci. Au lieu d'appeler cette méthode, assurez-vous que le flux est correctement supprimé.

(Hérité de 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.

CopyTo(OracleLob)

Copie de OracleLob vers un OracleLob de destination.

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.

CopyTo(Stream)

Lit les octets du flux actuel et les écrit dans un autre flux. Les positions des deux flux sont avancées par le nombre d’octets copiés.

(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. Les positions des deux flux sont avancées par le nombre d’octets copiés.

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

Lit de façon asynchrone tous les octets du flux actuel et les écrit dans un autre flux. Les positions des deux flux sont avancées par le nombre d’octets copiés.

(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é. Les positions des deux flux sont avancées par le nombre d’octets copiés.

(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. Les positions des deux flux sont avancées par le nombre d’octets copiés.

(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. Les positions des deux flux sont avancées par le nombre d’octets copiés.

(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.

(Hérité de MarshalByRefObject)
CreateWaitHandle()
Obsolète.
Obsolète.
Obsolète.

Alloue un objet WaitHandle.

(Hérité de Stream)
Dispose()

Libère les ressources utilisées par cet objet.

Dispose()

Libère toutes les ressources utilisées par Stream.

(Hérité de Stream)
Dispose(Boolean)

Libère les ressources non managées utilisées par Stream et libère éventuellement les ressources managées.

(Hérité de Stream)
DisposeAsync()

Libère de façon asynchrone les ressources non managées utilisées par 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.

EndRead(IAsyncResult)

Attend que la requête asynchrone en attente se termine. (Utilisez ReadAsync(Byte[], Int32, Int32) à la place.)

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

Termine une opération d'écriture asynchrone. (Utilisez WriteAsync(Byte[], Int32, Int32) à la place.)

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

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
Erase()

Efface toutes les données de OracleLob.

Erase(Int64, Int64)

Efface la quantité de données spécifiée dans OracleLob.

Flush()

Non pris en charge actuellement.

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.

(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.

(Hérité de Stream)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetLifetimeService()
Obsolète.

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.

(Hérité de MarshalByRefObject)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
InitializeLifetimeService()
Obsolète.

Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance.

(Hérité de MarshalByRefObject)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

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

Crée une copie superficielle de l'objet MarshalByRefObject actuel.

(Hérité de MarshalByRefObject)
ObjectInvariant()
Obsolète.

Assure la prise en charge d'un 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.

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.

(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.

(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.

(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.

(Hérité de Stream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

Lit au moins un nombre minimal d’octets à partir du flux actuel et avance la position dans le flux par le nombre d’octets lus.

(Hérité de Stream)
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken)

Lit de manière asynchrone au moins un nombre minimal d’octets à partir du flux actuel, avance la position dans le flux en fonction du nombre d’octets lus et surveille les demandes d’annulation.

(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.

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

Lit le nombre d’octets count du flux actuel et avance la position dans le flux.

(Hérité de Stream)
ReadExactly(Span<Byte>)

Lit les octets du flux actuel et avance la position dans le flux jusqu’à ce que soit buffer rempli.

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

Lit de manière asynchrone le nombre d’octets count du flux actuel, avance la position dans le flux et surveille les demandes d’annulation.

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

Lit de manière asynchrone les octets du flux actuel, avance la position dans le flux jusqu’à ce que le buffer soit rempli et surveille les demandes d’annulation.

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

Définit la position dans le flux OracleLob actuel.

SetLength(Int64)

Définit la longueur du flux OracleLob selon une valeur inférieure à la longueur actuelle.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(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.

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.

(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.

(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.

(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.

(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.

WriteByte(Byte)

Écrit un octet à la position actuelle dans le flux et avance d'un octet la position dans le flux.

(Hérité de Stream)

Implémentations d’interfaces explicites

IDisposable.Dispose()

Libère toutes les ressources utilisées par Stream.

(Hérité de Stream)

Méthodes d’extension

CopyToAsync(Stream, PipeWriter, CancellationToken)

Lit de façon asynchrone les octets du Stream et les écrit dans le PipeWriter spécifié en utilisant un jeton d’annulation.

S’applique à