OracleLob Clase

Definición

Representa un tipo de datos LOB (objeto binario grande) almacenado en un servidor Oracle.Represents a large object binary (LOB) data type stored on an Oracle server. Esta clase no puede heredarse.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
Herencia
Implementaciones

Comentarios

DifiereOracleBFile de en que los datos se almacenan en el servidor en lugar de en un archivo físico en el sistema operativo. OracleLobAn OracleLob differs from an OracleBFile in that the data is stored on the server instead of in a physical file in the operating system. También puede ser un objeto de lectura y escritura, a diferencia de OracleBFileun, que siempre es de solo lectura.It can also be a read-write object, unlike an OracleBFile, which is always read-only.

Puede ser uno de estos OracleType tipos de datos. OracleLobAn OracleLob may be one of these OracleType data types.

OracleType, tipo de datosOracleType data type DescripciónDescription
Blob Un tipo BLOB de datos de Oracle que contiene datos binarios con un tamaño máximo de 4 gigabytes (GB).An Oracle BLOB data type that contains binary data with a maximum size of 4 gigabytes (GB). Se asigna a una Array de tipo Byte.This maps to an Array of type Byte.
Clob Tipo de CLOB datos de Oracle que contiene datos de caracteres, basados en el juego de caracteres predeterminado del servidor, con un tamaño máximo de 4 GB.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. Se asigna a String.This maps to String.
NClob Tipo de NCLOB datos de Oracle que contiene datos de caracteres, basados en el juego de caracteres nacional del servidor con un tamaño máximo de 4 GB.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. Se asigna a String.This maps to String.

Un programador Array de aplicaciones .net puede recuperar los LOB valores de Oracle en tipos de datos básicos de .net, Byte como Stringtipo y, o OracleLob el tipo de datos especializado.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 OracleLob clase admite la lectura y escritura de datos en Oracle LOB en la base de datos de Oracle.The OracleLob class supports reading data from and writing to the Oracle LOB in the Oracle database.

A continuación se muestran las principales características de OracleLob un tipo de datos que lo distinguen de los tipos de datos básicos de .net:The following are the main characteristics of an OracleLob data type that distinguish it from basic .NET data types:

  • Después de recuperar el valor LOB de Oracle de la base de datos OracleLob de Oracle en la clase, LOB puede cambiar los datos en una transacción abierta y los cambios se reflejan directamente en la base de datos.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 recupera el valor de LOB Oracle en un Array de tipo Byte o String y actualiza estas matrices, los cambios no se reflejan en la base de datos.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.

  • Cuando se usa la OracleLob clase para tener acceso a un fragmento LOB de un valor, solo se pasa ese fragmento de la base de datos de Oracle al cliente.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. Cuando se usa el GetChars método para tener acceso a un fragmento LOB de un valor, todo el contenido del valor se pasa desde la base de datos de Oracle al cliente.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.

Para obtener un OracleLob objeto, llame al GetOracleLob método.To obtain an OracleLob object, call the GetOracleLob method.

Puede crear un OracleLob que sea NULL con este formato:You can construct an OracleLob that is NULL using this format:

OracleLob myLob = OracleLob.Null;  

Esta técnica se usa principalmente para probar si un LOB devuelto desde el servidor es null, como se muestra en este ejemplo:This technique is used primarily to test whether a LOB returned from the server is NULL, as this example illustrates:

If(myLob == OracleLob.Null)  

Un valor LOB NULL se comporta de forma similar a un byte LOB de cero Read en que se ejecuta correctamente y siempre devuelve cero bytes.A NULL LOB behaves similarly to a zero-byte LOB in that Read succeeds and always returns zero bytes.

Al seleccionar LOB una columna que contiene un valor null Null, se devuelve.Selecting a LOB column that contains a null value returns Null.

Debe comenzar una transacción antes de obtener un temporal LOB.You must begin a transaction before obtaining a temporary LOB. De lo contrario OracleDataReader , puede que no pueda obtener datos más adelante.Otherwise, the OracleDataReader may fail to obtain data later.

También puede abrir un temporal LOB en Oracle llamando a DBMS_LOB. Procedimiento almacenado del sistema CREATETEMPORARY y enlazar un parámetro de LOB salida.You can also open a temporary LOB in Oracle by calling the DBMS_LOB.CREATETEMPORARY system stored procedure and binding a LOB output parameter. En el lado del cliente, un LOB comportamiento temporal se comporta como un basado LOBen tabla.On the client side, a temporary LOB behaves like a table-based LOB. Por ejemplo, para actualizar el temporal LOB, debe incluirse en una transacción.For example, to update the temporary LOB, it must be enclosed in a transaction.

En el C# ejemplo siguiente se muestra cómo abrir un LOBtemporal.The following C# example demonstrates how to open a temporary LOB.

OracleConnection 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();  
OracleLob tempLob = (OracleLob)command.Parameters[0].Value;  
byte[] 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  

Nota

Se produce WriteByte un error en el método heredado si se utiliza InvalidOperationException con datos de caracteres y se produce una excepción.The inherited WriteByte method fails if used with character data, and an InvalidOperationException is thrown. Use el método Write en su lugar.Use the Write method instead.

Los LOBs temporales solo se cierran cuando se cierra la conexión, pero con agrupación y bajo carga LOB, los s temporales no se cierran.Temporary LOBs are only closed when the connection is closed, but with pooling and under load, temporary LOBs do not close. Esto se puede resolver eliminando el temporal LOBmediante la invocación tempLob.Dispose()de.This can be resolved by disposing the temporary LOB, by invoking tempLob.Dispose().

Campos

Null

Representa un objeto OracleLob nulo.Represents a null OracleLob object.

Propiedades

CanRead

Obtiene un valor que indica si se puede leer la secuencia LOB.Gets a value indicating whether the LOB stream can be read.

CanSeek

Obtiene un valor que indica si se pueden realizar operaciones de búsqueda hacia delante y hacia atrás.Gets a value indicating whether forward and backward seek operations can be performed.

CanTimeout

Obtiene un valor que determina si se puede agotar el tiempo de espera de la secuencia actual.Gets a value that determines whether the current stream can time out.

(Heredado de Stream)
CanWrite

Devuelve siempre un valor true, independientemente de si LOB admite o no la escritura.Always returns true, regardless of whether the LOB supports writing or not.

ChunkSize

Obtiene un valor que indica el número mínimo de bytes que se van a recuperar del servidor o se van a enviar a él durante una operación de lectura y escritura.Gets a value indicating the minimum number of bytes to retrieve from or send to the server during a read/write operation.

Connection

Obtiene el objeto OracleConnection que utiliza esta instancia de OracleLob.Gets the OracleConnection used by this instance of the OracleLob.

IsBatched

Obtiene un valor que indica si una aplicación ha llamado al método BeginBatch().Gets a value indicating whether an application called the BeginBatch() method.

IsNull

Obtiene un valor que indica si el objeto OracleLob es una secuencia Null.Gets a value that indicates whether the OracleLob is a Null stream.

IsTemporary

Obtiene un valor que indica si OracleLob es un LOB temporal.Gets a value indicating whether the OracleLob is a temporary LOB.

Length

Obtiene un valor que devuelve el tamaño de OracleLob.Gets a value that returns the size of the OracleLob.

LobType

Obtiene un valor que devuelve el tipo de datos LOB.Gets a value that returns the LOB data type.

Position

Obtiene la actual posición de lectura en la secuencia OracleLob.Gets the current read position in the OracleLob stream.

ReadTimeout

Obtiene o establece un valor, en milisegundos, que determina durante cuánto tiempo la secuencia intentará realizar operaciones de lectura antes de que se agote el tiempo de espera.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out.

(Heredado de Stream)
Value

Obtiene el valor de secuencia de Common Language Runtime que equivale al valor subyacente.Gets the common language runtime stream value equivalent of the underlying value.

WriteTimeout

Obtiene o establece un valor, en milisegundos, que determina durante cuánto tiempo la secuencia intentará realizar operaciones de escritura antes de que se agote el tiempo de espera.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out.

(Heredado de Stream)

Métodos

Append(OracleLob)

Anexa datos del LOB especificado al LOB actual.Appends data from the specified LOB to the current LOB.

BeginBatch()

Evita que se activen los desencadenadores en el servidor mientras se realizan varias operaciones de lectura.Prevents server-side triggers from firing while performing multiple read operations.

BeginBatch(OracleLobOpenMode)

Evita que se activen los desencadenadores del servidor mientras se realizan varias operaciones de lectura y escritura en el modo de acceso especificado.Prevents server-side triggers from firing while performing multiple read and write operations in the specified access mode.

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

Comienza una operación de lectura asincrónica.Begins an asynchronous read operation. (Considere usar ReadAsync(Byte[], Int32, Int32) en su lugar).(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(Heredado de Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Comienza una operación de escritura asincrónica.Begins an asynchronous write operation. (Considere usar WriteAsync(Byte[], Int32, Int32) en su lugar).(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(Heredado de Stream)
Clone()

Crea un nuevo objeto OracleLob que hace referencia al mismo LOB de Oracle que el objeto OracleLob original.Creates a new OracleLob object that references the same Oracle LOB as the original OracleLob object.

Close()

Cierra la secuencia actual y libera todos los recursos asociados a la secuencia.Closes the current stream and releases resources that are associated with the stream.

CopyTo(Int64, OracleLob, Int64, Int64)

Realiza una copia desde este objeto OracleLob en un objeto OracleLob de destino con la cantidad de datos especificada, y la posición de desplazamiento de origen.Copies from this OracleLob to a destination OracleLob with the specified amount of data, and the source offset.

CopyTo(OracleLob)

Realiza una copia de este objeto OracleLob en un objeto OracleLob de destino.Copies from this OracleLob to a destination OracleLob.

CopyTo(OracleLob, Int64)

Copia datos de este objeto OracleLob en un objeto OracleLob de destino con la cantidad de datos especificada.Copies from this OracleLob to a destination OracleLob with the specified amount of data.

CopyTo(Stream)

Lee los bytes de la secuencia actual y los escribe en otra secuencia de destino.Reads the bytes from the current stream and writes them to another stream.

(Heredado de Stream)
CopyTo(Stream, Int32)

Lee todos los bytes de la secuencia actual y los escribe en otra secuencia, usando el tamaño de búfer especificado.Reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Heredado de Stream)
CopyToAsync(Stream)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia.Asynchronously reads the bytes from the current stream and writes them to another stream.

(Heredado de Stream)
CopyToAsync(Stream, CancellationToken)

Lee de forma asincrónica los bytes de la secuencia actual y los escribe en otra secuencia mediante un token de cancelación especificado.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token.

(Heredado de Stream)
CopyToAsync(Stream, Int32)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia, usando el tamaño de búfer especificado.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Heredado de Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia, utilizando el tamaño de búfer y el token de cancelación especificados.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size and cancellation token.

(Heredado de Stream)
CreateObjRef(Type)

Crea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Heredado de MarshalByRefObject)
CreateWaitHandle()

Asigna un objeto WaitHandle.Allocates a WaitHandle object.

(Heredado de Stream)
Dispose()

Libera los recursos utilizados por este objeto.Releases the resources that are used by this object.

Dispose(Boolean)

Libera los recursos no administrados que usa Stream y, de forma opcional, libera los recursos administrados.Releases the unmanaged resources used by the Stream and optionally releases the managed resources.

(Heredado de Stream)
DisposeAsync()

Libera de forma asincrónica los recursos no administrados usados por Stream.Asynchronously releases the unmanaged resources used by the Stream.

(Heredado de Stream)
EndBatch()

Permite que se activen de nuevo los desencadenadores en el servidor después de que se hayan realizado varias operaciones de escritura.Allows server-side triggers to resume firing after performing multiple write operations.

EndRead(IAsyncResult)

Espera a que se complete la lectura asincrónica que se encuentra pendiente.Waits for the pending asynchronous read to complete. (Considere usar ReadAsync(Byte[], Int32, Int32) en su lugar).(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(Heredado de Stream)
EndWrite(IAsyncResult)

Finaliza una operación de escritura asincrónica.Ends an asynchronous write operation. (Considere usar WriteAsync(Byte[], Int32, Int32) en su lugar).(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(Heredado de Stream)
Equals(Object)

Determina si el objeto especificado es igual al objeto actual.Determines whether the specified object is equal to the current object.

(Heredado de Object)
Erase()

Borra todos los datos de este objeto OracleLob.Erases all data from this OracleLob.

Erase(Int64, Int64)

Borra la cantidad de datos especificada de este objeto OracleLob.Erases the specified amount of data from this OracleLob.

Flush()

No se admite actualmente.Not currently supported.

FlushAsync()

Borra asincrónicamente todos los búferes de esta secuencia y hace que los datos almacenados en búfer se escriban en el dispositivo subyacente.Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.

(Heredado de Stream)
FlushAsync(CancellationToken)

Borra asincrónicamente todos los búferes de esta secuencia, y hace que todos los datos almacenados en búfer se escriban en el dispositivo subyacente y supervisa las solicitudes de cancelación.Asynchronously clears all buffers for this stream, causes any buffered data to be written to the underlying device, and monitors cancellation requests.

(Heredado de Stream)
GetHashCode()

Sirve como función hash predeterminada.Serves as the default hash function.

(Heredado de Object)
GetLifetimeService()

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Heredado de MarshalByRefObject)
GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Heredado de Object)
InitializeLifetimeService()

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.Obtains a lifetime service object to control the lifetime policy for this instance.

(Heredado de MarshalByRefObject)
MemberwiseClone()

Crea una copia superficial del Object actual.Creates a shallow copy of the current Object.

(Heredado de Object)
MemberwiseClone(Boolean)

Crea una copia superficial del objeto MarshalByRefObject actual.Creates a shallow copy of the current MarshalByRefObject object.

(Heredado de MarshalByRefObject)
ObjectInvariant()

Proporciona compatibilidad con una clase Contract.Provides support for a Contract.

(Heredado de Stream)
Read(Byte[], Int32, Int32)

Lee una secuencia de bytes en la secuencia OracleLob actual y hace avanzar la posición dentro de la secuencia en función del número de bytes leídos.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>)

Cuando se reemplaza en una clase derivada, se lee una secuencia de bytes en la secuencia actual y se hace avanzar la posición dentro de la secuencia el número de bytes leídos.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.

(Heredado de Stream)
ReadAsync(Byte[], Int32, Int32)

Lee asincrónicamente una secuencia de bytes de la secuencia actual y avanza la posición en esta secuencia según el número de bytes leídos.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(Heredado de Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Lee de forma asincrónica una secuencia de bytes en la secuencia actual, se hace avanzar la posición dentro de la secuencia el número de bytes leídos y controla las solicitudes de cancelación.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.

(Heredado de Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Lee de forma asincrónica una secuencia de bytes en la secuencia actual, se hace avanzar la posición dentro de la secuencia el número de bytes leídos y controla las solicitudes de cancelación.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.

(Heredado de Stream)
ReadByte()

Lee un byte de la secuencia y hace avanzar la posición de la secuencia en un byte, o devuelve -1 si está al final de la secuencia.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.

(Heredado de Stream)
Seek(Int64, SeekOrigin)

Establece la posición en la secuencia OracleLob actual.Sets the position on the current OracleLob stream.

SetLength(Int64)

Establece la longitud de la secuencia OracleLob en un valor menor que la longitud actual.Sets the length of the OracleLob stream to a value less than the current length.

ToString()

Devuelve un valor de tipo string que representa el objeto actual.Returns a string that represents the current object.

(Heredado de Object)
Write(Byte[], Int32, Int32)

Escribe una secuencia de bytes en la secuencia OracleLob actual y hace avanzar la posición actual dentro de la secuencia en el número de bytes especificado.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>)

Cuando se reemplaza en una clase derivada, se escribe una secuencia de bytes en la secuencia actual y se hace avanzar la posición actual dentro de la secuencia el número de bytes escritos.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.

(Heredado de Stream)
WriteAsync(Byte[], Int32, Int32)

Escribe asincrónicamente una secuencia de bytes en la secuencia actual y avanza la posición actual en esta secuencia según el número de bytes escritos.Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(Heredado de Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Escribe de forma asincrónica una secuencia de bytes en la secuencia actual, se hace avanzar la posición actual dentro de la secuencia el número de bytes escritos y controla las solicitudes de cancelación.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.

(Heredado de Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Escribe de forma asincrónica una secuencia de bytes en la secuencia actual, se hace avanzar la posición actual dentro de la secuencia el número de bytes escritos y controla las solicitudes de cancelación.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.

(Heredado de Stream)
WriteByte(Byte)

Escribe un byte en la posición actual de la secuencia OracleLob y avanza la posición de la secuencia en un byte.Writes a byte to the current position in the OracleLob stream, and advances the position within the stream by one byte.

Implementaciones de interfaz explícitas

IDisposable.Dispose()

Libera todos los recursos que usa Stream.Releases all resources used by the Stream.

(Heredado de Stream)

Se aplica a