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 est différent d’un OracleBFile dans le cas où 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 OracleBFile à un, 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 BLOBType de données Oracle contenant des données binaires d’une taille maximale de 4 gigaoctets (Go). Correspond à un Array de type Byte.
Clob Type de CLOB données Oracle 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. Correspond à String.
NClob Type de NCLOB données Oracle 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. Correspond à String.

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

Les caractéristiques principales d’un OracleLob type de données qui le distinguent des types de données .net de base sont les suivantes :

  • Après avoir récupéré la LOB valeur Oracle de la base de données Oracle dans la OracleLob classe, vous pouvez modifier les LOB données dans une transaction ouverte et vos modifications sont reflétées directement dans la base de données. Si vous récupérez la LOB valeur Oracle dans un Array de Byte type String ou 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 OracleLob qui a la valeur null en utilisant 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 façon qu’un zéro octet LOB dans qui se Read déroule correctement 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 la DBMS_LOB. Procédure stockée système CREATETEMPORARY et liaison d’un LOB paramètre de sortie. Du côté client, un temporaire LOB se comporte comme un basé sur 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 une InvalidOperationException exception est levée. Utilisez plutôt la méthode Write.

LOBLes savesets temporaires sont fermés uniquement lorsque la connexion est fermée, mais avec le regroupement et en charge, les LOB savesets temporaires ne se ferment pas. Cela peut être résolu en supprimant 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.

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

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

Lit de façon asynchrone tous les octets du flux actuel et les écrit dans un autre flux.

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

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

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

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

Actuellement non pris en charge.

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.

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

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

S’applique à