OracleLob Classe

Définition

Représente un type de données binaire d’objet volumineuxLOB 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

Une OracleLob diffère d'une OracleBFile en ce que les données sont stockées sur le serveur au lieu d'être dans un fichier physique du système d'exploitation. Il peut également s’agir d’un objet en lecture-écriture, contrairement à un OracleBFile, qui est toujours en lecture seule.

Il OracleLob peut s’agir de 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 avec une taille maximale de 4 gigaoctets (Go). Cela correspond à un Array type Byte.
Clob Type de données Oracle CLOB qui contient des données de caractères, en fonction du jeu de caractères par défaut sur le serveur, avec une taille maximale de 4 Go. Cela correspond à String.
NClob Type de données Oracle NCLOB qui contient des données de caractères, en fonction du jeu de caractères national sur le serveur avec une taille maximale de 4 Go. Cela correspond à String.

Un développeur d’applications .NET peut récupérer les valeurs Oracle LOB en types de données de base .NET, tels que Array de type Byte et String, ou le type de données OracleLob 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.

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

  • Une fois que vous avez récupéré la valeur Oracle de la base de données Oracle LOB dans la OracleLob classe, vous pouvez modifier les LOB données dans 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 type Byte ou String 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 bloc 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 transmis de la base de données Oracle au client.

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

Vous pouvez construire une OracleLob valeur NULL au format suivant :

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

Cette technique est principalement utilisée pour tester si un LOB retour 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 octet de zéro LOB dans ce qui Read réussit et retourne toujours zéro octets.

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

Vous devez commencer une transaction avant d’obtenir un fichier temporaire LOB. Sinon, il OracleDataReader peut échouer à obtenir des données ultérieurement.

Vous pouvez également ouvrir un temporaire LOB dans Oracle en appelant le DBMS_LOB. PROCÉDURE stockée système CREATETEMPORARY et liaison d’un LOB paramètre de sortie. Côté client, un comportement 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();

Note

La méthode héritée WriteByte échoue si elle est utilisée avec des données de caractères, et une InvalidOperationException méthode est levée. Utilisez plutôt la Write méthode.

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

Champs

Nom Description
Null

Représente un objet Null OracleLob .

Propriétés

Nom Description
CanRead

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

CanSeek

Obtient une valeur indiquant si les opérations de recherche vers l’avant et vers l’arrière peuvent être effectuées.

CanTimeout

Obtient une valeur qui détermine si le flux actuel peut expirer.

(Hérité de Stream)
CanWrite

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

ChunkSize

Obtient une valeur indiquant le nombre minimal d’octets à récupérer ou à envoyer au serveur pendant une opération de lecture/écriture.

Connection

Obtient l’utilisé OracleConnection par cette instance du OracleLob.

IsBatched

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

IsNull

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

IsTemporary

Obtient une valeur indiquant si l’objet OracleLob est temporaire LOB.

Length

Obtient une valeur qui retourne la taille du OracleLob.

LobType

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

Position

Obtient la position de lecture actuelle dans le OracleLob flux.

ReadTimeout

Obtient ou définit une valeur, en millisecondes, qui détermine la durée pendant laquelle le flux tente de lire avant l’expiration du délai d’attente.

(Hérité de Stream)
Value

Obtient la valeur de flux common language runtime équivalente à la valeur sous-jacente.

WriteTimeout

Obtient ou définit une valeur, en millisecondes, qui détermine la durée pendant laquelle le flux tentera d’écrire avant l’expiration du délai d’attente.

(Hérité de Stream)

Méthodes

Nom Description
Append(OracleLob)

Ajoute des données de l’élément spécifié LOB au fichier actif LOB.

BeginBatch()

Empêche le déclenchement des déclencheurs côté serveur lors de l’exécution de plusieurs opérations de lecture.

BeginBatch(OracleLobOpenMode)

Empêche le déclenchement des déclencheurs côté serveur lors de l’exécution de plusieurs opérations de lecture et d’écriture en mode d’accès spécifié.

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

Commence une opération de lecture asynchrone. (Envisagez d’utiliser ReadAsync(Byte[], Int32, Int32) à la place.)

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

Commence une opération d’écriture asynchrone. (Envisagez d’utiliser WriteAsync(Byte[], Int32, Int32) à la place.)

(Hérité de Stream)
Clone()

Crée un OracleLob objet qui référence le même Oracle LOB que l’objet d’origine OracleLob .

Close()

Ferme le flux actuel et libère les ressources associées au flux.

Close()

Ferme le flux actuel et libère toutes les ressources (telles que les sockets et les handles de fichiers) associées au flux actuel. Au lieu d’appeler cette méthode, vérifiez que le flux est correctement supprimé.

(Hérité de Stream)
CopyTo(Int64, OracleLob, Int64, Int64)

Copie de cela OracleLob vers une destination OracleLob avec la quantité de données spécifiée et le décalage source.

CopyTo(OracleLob, Int64)

Copie de ceci OracleLob vers une destination OracleLob avec la quantité de données spécifiée.

CopyTo(OracleLob)

Copie de ceci OracleLob vers une destination OracleLob.

CopyTo(Stream, Int32)

Lit les octets du flux actuel et les écrit dans un autre flux à l’aide d’une taille de mémoire tampon spécifiée. Les deux positions de flux sont avancées par le nombre d’octets copiés.

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

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

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

Lit de manière asynchrone les octets du flux actuel et les écrit dans un autre flux à l’aide d’une taille de mémoire tampon et d’un jeton d’annulation spécifiés. Les deux positions de flux sont avancées par le nombre d’octets copiés.

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

Lit de façon asynchrone les octets du flux actuel et les écrit dans un autre flux à l’aide d’une taille de mémoire tampon spécifiée. Les deux positions de flux sont avancées par le nombre d’octets copiés.

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

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

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

Crée un objet qui contient toutes les informations pertinentes requises pour générer un proxy utilisé pour communiquer avec un objet distant.

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

Alloue un WaitHandle objet.

(Hérité de Stream)
Dispose()

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

Dispose()

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

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

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

(Hérité de Stream)
EndBatch()

Permet aux déclencheurs côté serveur de reprendre le déclenchement après avoir effectué plusieurs opérations d’écriture.

EndRead(IAsyncResult)

Attend la fin de la lecture asynchrone en attente. (Envisagez d’utiliser ReadAsync(Byte[], Int32, Int32) à la place.)

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

Termine une opération d’écriture asynchrone. (Envisagez d’utiliser 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 ce OracleLob.

Erase(Int64, Int64)

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

Flush()

N’est pas pris en charge actuellement.

FlushAsync()

Efface de façon asynchrone toutes les mémoires tampons de ce flux et entraîne l’écriture de toutes les 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 de ce flux, entraîne l’écriture de toutes les données mises en mémoire tampon sur l’appareil sous-jacent et surveille les demandes d’annulation.

(Hérité de Stream)
GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetLifetimeService()

Récupère l’objet de service de durée de vie actuel qui contrôle la stratégie de durée de vie de cette instance.

(Hérité de MarshalByRefObject)
GetType()

Obtient la Type de l’instance actuelle.

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

(Hérité de MarshalByRefObject)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

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

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

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

Fournit la prise en charge d’un Contract.

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

Lit une séquence d’octets à partir du flux actuel OracleLob et avance la position dans le flux en fonction du nombre d’octets lus.

ReadAsync(Byte[], Int32, Int32, CancellationToken)

Lit de façon asynchrone une séquence 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)
ReadAsync(Byte[], Int32, Int32)

Lit de façon asynchrone une séquence d’octets à partir du flux actuel et avance la position dans le flux en fonction du nombre d’octets lus.

(Hérité de Stream)
ReadByte()

Lit un octet à partir du flux et avance la position dans le flux d’un octet, ou retourne -1 si à la fin du flux.

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

Définit la position sur le flux actuel OracleLob .

SetLength(Int64)

Définit la longueur du OracleLob flux sur 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 séquence d’octets dans le flux actuel OracleLob et avance la position actuelle dans ce flux par le nombre d’octets écrits.

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 par le nombre d’octets écrits et surveille les demandes d’annulation.

(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 ce flux par le nombre d’octets écrits.

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

Écrit un octet à la position actuelle du OracleLob flux et avance la position dans le flux d’un octet.

WriteByte(Byte)

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

(Hérité de Stream)

Implémentations d’interfaces explicites

Nom Description
IDisposable.Dispose()

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

(Hérité de Stream)

S’applique à