OracleLob Classe

Definizione

Rappresenta un tipo di dati Large Object Binary (LOB) memorizzato su un server Oracle.Represents a large object binary (LOB) data type stored on an Oracle server. Questa classe non può essere ereditata.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
Ereditarietà
Implementazioni

Commenti

Un OracleLob oggetto è diverso da OracleBFile un in quanto i dati vengono archiviati nel server anziché in un file fisico nel sistema operativo.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. Può anche essere un oggetto di lettura/scrittura, a differenza di OracleBFile, che è sempre di sola lettura.It can also be a read-write object, unlike an OracleBFile, which is always read-only.

Un OracleLob può essere uno di questi OracleType tipi di dati.An OracleLob may be one of these OracleType data types.

Tipo di dati OracleTypeOracleType data type DescriptionDescription
Blob Tipo di BLOB dati Oracle che contiene dati binari con una dimensione massima di 4 gigabyte (GB).An Oracle BLOB data type that contains binary data with a maximum size of 4 gigabytes (GB). Esegue il mapping a un oggetto Array di tipo Byte.This maps to an Array of type Byte.
Clob Tipo di CLOB dati Oracle in cui sono contenuti dati di tipo carattere, basati sul set di caratteri predefinito sul server, con una dimensione massima di 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. Esegue il mapping a String.This maps to String.
NClob Tipo di NCLOB dati Oracle in cui sono contenuti dati di tipo carattere, basati sul set di caratteri nazionali sul server con una dimensione massima di 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. Esegue il mapping a String.This maps to String.

Uno sviluppatore Array di applicazioni .NET può recuperare i LOB valori Oracle in tipi di dati .NET di base, ad Byte esempio Stringdi tipo e, OracleLob o il tipo di dati specializzato.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 classe supporta la lettura e la scrittura di dati in LOB Oracle nel database Oracle.The OracleLob class supports reading data from and writing to the Oracle LOB in the Oracle database.

Di seguito sono riportate le caratteristiche OracleLob principali di un tipo di dati che lo distinguono dai tipi di dati .NET di base:The following are the main characteristics of an OracleLob data type that distinguish it from basic .NET data types:

  • Dopo aver recuperato il valore LOB Oracle dal database OracleLob Oracle alla classe, è possibile modificare i LOB dati in una transazione aperta e le modifiche vengono applicate direttamente al database.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. Se si recupera il valore LOB Oracle in un Array tipo Byte o String e si aggiornano queste matrici, le modifiche non vengono riflesse nel database.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.

  • Quando si utilizza la OracleLob classe per accedere a un blocco di LOB un valore, solo quel blocco viene passato dal database Oracle al 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. Quando si utilizza il GetChars metodo per accedere a un blocco di LOB un valore, l'intero contenuto del valore viene passato dal database Oracle al 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.

Per ottenere un OracleLob oggetto, chiamare il GetOracleLob metodo.To obtain an OracleLob object, call the GetOracleLob method.

È possibile costruire un OracleLob valore null usando il formato seguente:You can construct an OracleLob that is NULL using this format:

OracleLob myLob = OracleLob.Null;  

Questa tecnica viene utilizzata principalmente per verificare se un LOB restituito dal server è null, come illustrato nell'esempio seguente: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 valore LOB null si comporta in modo analogo a un LOB byte zero Read in che ha esito positivo e restituisce sempre zero byte.A NULL LOB behaves similarly to a zero-byte LOB in that Read succeeds and always returns zero bytes.

Se si LOB seleziona una colonna che contiene un valore Nullnull, viene restituito.Selecting a LOB column that contains a null value returns Null.

È necessario iniziare una transazione prima di ottenere un LOBoggetto temporaneo.You must begin a transaction before obtaining a temporary LOB. In caso contrario OracleDataReader , potrebbe non riuscire a ottenere i dati in un secondo momento.Otherwise, the OracleDataReader may fail to obtain data later.

È anche possibile aprire un oggetto LOB temporaneo in Oracle chiamando DBMS_LOB. CREATETEMPORARY System stored procedure e binding di LOB un parametro di output.You can also open a temporary LOB in Oracle by calling the DBMS_LOB.CREATETEMPORARY system stored procedure and binding a LOB output parameter. Sul lato client, un comportamento temporaneo LOB è simile a quello basato LOBsu tabella.On the client side, a temporary LOB behaves like a table-based LOB. Per aggiornare temporaneamente LOB, ad esempio, deve essere racchiuso in una transazione.For example, to update the temporary LOB, it must be enclosed in a transaction.

Nell'esempio C# seguente viene illustrato come aprire un oggetto LOBtemporaneo.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

Il metodo WriteByte ereditato ha esito negativo se utilizzato con dati di InvalidOperationException tipo carattere e viene generata un'eccezione.The inherited WriteByte method fails if used with character data, and an InvalidOperationException is thrown. Al suo posto usa il metodo Write.Use the Write method instead.

I LOBtemporanei vengono chiusi solo quando la connessione viene chiusa, ma con il pool e sotto carico, LOBi temporanei non si chiudono.Temporary LOBs are only closed when the connection is closed, but with pooling and under load, temporary LOBs do not close. Questo problema può essere risolto eliminando l' LOBoggetto temporaneo tempLob.Dispose()richiamando.This can be resolved by disposing the temporary LOB, by invoking tempLob.Dispose().

Campi

Null

Rappresenta un oggetto OracleLob null.Represents a null OracleLob object.

Proprietà

CanRead

Ottiene un valore che indica se è possibile leggere il flusso del tipo di dati LOB.Gets a value indicating whether the LOB stream can be read.

CanSeek

Ottiene un valore che indica se è possibile eseguire operazioni di ricerca avanti e indietro.Gets a value indicating whether forward and backward seek operations can be performed.

CanTimeout

Ottiene un valore che determina se il flusso corrente prevede il timeout.Gets a value that determines whether the current stream can time out.

(Ereditato da Stream)
CanWrite

Restituisce sempre true, indipendentemente dal fatto che il tipo di dati LOB supporti o meno la scrittura.Always returns true, regardless of whether the LOB supports writing or not.

ChunkSize

Ottiene un valore che indica il numero minimo di byte da recuperare da o inviare al server durante un'operazione di lettura/scrittura.Gets a value indicating the minimum number of bytes to retrieve from or send to the server during a read/write operation.

Connection

Ottiene l'oggetto OracleConnection utilizzato da questa istanza dell'oggetto OracleLob.Gets the OracleConnection used by this instance of the OracleLob.

IsBatched

Ottiene un valore che indica se è stato chiamato il metodo BeginBatch().Gets a value indicating whether an application called the BeginBatch() method.

IsNull

Ottiene un valore che indica se l'oggetto OracleLob è un flusso Null.Gets a value that indicates whether the OracleLob is a Null stream.

IsTemporary

Ottiene un valore che indica se l'oggetto OracleLob è un tipo di dati LOB temporaneo.Gets a value indicating whether the OracleLob is a temporary LOB.

Length

Ottiene un valore che restituisce le dimensioni dell'oggetto OracleLob.Gets a value that returns the size of the OracleLob.

LobType

Ottiene un valore che restituisce il tipo di dati LOB.Gets a value that returns the LOB data type.

Position

Ottiene la posizione di lettura corrente nel flusso OracleLob.Gets the current read position in the OracleLob stream.

ReadTimeout

Ottiene o imposta un valore, in millisecondi, che determina per quanto tempo il flusso tenterà la lettura prima del timeout.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out.

(Ereditato da Stream)
Value

Ottiene il valore del flusso di runtime del linguaggio comune equivalente al valore sottostante.Gets the common language runtime stream value equivalent of the underlying value.

WriteTimeout

Ottiene o imposta un valore, in millisecondi, che determina per quanto tempo il flusso tenterà la scrittura prima del timeout.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out.

(Ereditato da Stream)

Metodi

Append(OracleLob)

Aggiunge i dati dal tipo di dati LOB specificato al tipo di dati LOB corrente.Appends data from the specified LOB to the current LOB.

BeginBatch()

Impedisce l'attivazione di trigger lato server durante l'esecuzione di più operazioni di lettura.Prevents server-side triggers from firing while performing multiple read operations.

BeginBatch(OracleLobOpenMode)

Impedisce l'attivazione di trigger lato server durante l'esecuzione di più operazioni di lettura e di scrittura nella modalità di accesso specificata.Prevents server-side triggers from firing while performing multiple read and write operations in the specified access mode.

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

Inizia un'operazione di lettura asincrona.Begins an asynchronous read operation. (In alternativa, si consideri l'uso di ReadAsync(Byte[], Int32, Int32).)(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(Ereditato da Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Inizia un'operazione di scrittura asincrona.Begins an asynchronous write operation. (In alternativa, si consideri l'uso di WriteAsync(Byte[], Int32, Int32).)(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(Ereditato da Stream)
Clone()

Crea un nuovo oggetto OracleLob che fa riferimento allo stesso tipo di dati LOB Oracle come oggetto OracleLob di origine.Creates a new OracleLob object that references the same Oracle LOB as the original OracleLob object.

Close()

Chiude il flusso corrente e rilascia le risorse a esso associate.Closes the current stream and releases resources that are associated with the stream.

CopyTo(Int64, OracleLob, Int64, Int64)

Consente di copiare dall'oggetto OracleLob a un oggetto OracleLob di destinazione con la quantità specificata di dati e l'offset di origine.Copies from this OracleLob to a destination OracleLob with the specified amount of data, and the source offset.

CopyTo(OracleLob)

Consente di copiare da questo oggetto OracleLob a un oggetto OracleLob di destinazione.Copies from this OracleLob to a destination OracleLob.

CopyTo(OracleLob, Int64)

Consente di copiare dall'oggetto OracleLob a un oggetto OracleLob di destinazione con la quantità specificata di dati.Copies from this OracleLob to a destination OracleLob with the specified amount of data.

CopyTo(Stream)

Legge i byte dal flusso corrente e li scrive in un altro flusso.Reads the bytes from the current stream and writes them to another stream.

(Ereditato da Stream)
CopyTo(Stream, Int32)

Legge tutti i byte dal flusso corrente e li scrive in un altro flusso, usando una dimensione di buffer specificata.Reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Ereditato da Stream)
CopyToAsync(Stream)

Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso.Asynchronously reads the bytes from the current stream and writes them to another stream.

(Ereditato da Stream)
CopyToAsync(Stream, CancellationToken)

Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso, usando un token di annullamento specificato.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token.

(Ereditato da Stream)
CopyToAsync(Stream, Int32)

Legge in modo asincrono tutti i byte dal flusso corrente e li scrive in un altro flusso, utilizzando una dimensione di buffer specificata.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Ereditato da Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso, usando una dimensione di buffer specificata e un token di annullamento.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size and cancellation token.

(Ereditato da Stream)
CreateObjRef(Type)

Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione con un oggetto remoto.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Ereditato da MarshalByRefObject)
CreateWaitHandle()

Alloca un oggetto WaitHandle.Allocates a WaitHandle object.

(Ereditato da Stream)
Dispose()

Rilascia le risorse utilizzate da questo oggetto.Releases the resources that are used by this object.

Dispose(Boolean)

Rilascia le risorse non gestite usate da Stream e, facoltativamente, le risorse gestite.Releases the unmanaged resources used by the Stream and optionally releases the managed resources.

(Ereditato da Stream)
DisposeAsync()

Consente di liberare in modo asincrono le risorse non gestite utilizzate da Stream.Asynchronously releases the unmanaged resources used by the Stream.

(Ereditato da Stream)
EndBatch()

Consente di riprendere l'attivazione di trigger lato server dopo l'esecuzione di più operazioni di scrittura.Allows server-side triggers to resume firing after performing multiple write operations.

EndRead(IAsyncResult)

Attende il completamento della lettura asincrona in sospeso.Waits for the pending asynchronous read to complete. (In alternativa, si consideri l'uso di ReadAsync(Byte[], Int32, Int32).)(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(Ereditato da Stream)
EndWrite(IAsyncResult)

Termina un'operazione di scrittura asincrona.Ends an asynchronous write operation. (In alternativa, si consideri l'uso di WriteAsync(Byte[], Int32, Int32).)(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(Ereditato da Stream)
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
Erase()

Consente di cancellare tutti i dati da questo oggetto OracleLob.Erases all data from this OracleLob.

Erase(Int64, Int64)

Consente di cancellare la quantità specificata di dati da questo oggetto OracleLob.Erases the specified amount of data from this OracleLob.

Flush()

Non è attualmente supportato.Not currently supported.

FlushAsync()

Cancella in modo asincrono i dati di tutti i buffer del flusso e determina la scrittura dei dati memorizzati nel buffer nel dispositivo sottostante.Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.

(Ereditato da Stream)
FlushAsync(CancellationToken)

Cancella in modo asincrono i dati di tutti i buffer del flusso, determina la scrittura dei dati memorizzati nel buffer nel dispositivo sottostante e monitora le richieste di annullamento.Asynchronously clears all buffers for this stream, causes any buffered data to be written to the underlying device, and monitors cancellation requests.

(Ereditato da Stream)
GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetLifetimeService()

Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Ereditato da MarshalByRefObject)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
InitializeLifetimeService()

Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza.Obtains a lifetime service object to control the lifetime policy for this instance.

(Ereditato da MarshalByRefObject)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente.Creates a shallow copy of the current MarshalByRefObject object.

(Ereditato da MarshalByRefObject)
ObjectInvariant()

Fornisce supporto per un oggetto Contract.Provides support for a Contract.

(Ereditato da Stream)
Read(Byte[], Int32, Int32)

Consente di leggere una sequenza di byte dal flusso OracleLob corrente e di passare alla posizione successiva all'interno del flusso in base al numero di byte letti.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>)

Quando ne viene eseguito l'override in una classe derivata, legge una sequenza di byte dal flusso corrente e passa alla posizione successiva all'interno del flusso corrente in base al numero di byte letti.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.

(Ereditato da Stream)
ReadAsync(Byte[], Int32, Int32)

Legge in modo asincrono una sequenza di byte dal flusso corrente e passa alla posizione successiva nel flusso in base al numero di byte letti.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(Ereditato da Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Legge in modo asincrono una sequenza di byte dal flusso corrente e passa alla posizione successiva all'interno del flusso corrente in base al numero di byte letti e monitora le richieste di annullamento.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.

(Ereditato da Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Legge in modo asincrono una sequenza di byte dal flusso corrente e passa alla posizione successiva all'interno del flusso corrente in base al numero di byte letti e monitora le richieste di annullamento.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.

(Ereditato da Stream)
ReadByte()

Legge un byte dal flusso e sposta in avanti la posizione corrente all'interno del flusso di un byte o restituisce -1 se si trova alla fine del flusso.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.

(Ereditato da Stream)
Seek(Int64, SeekOrigin)

Imposta la posizione sul flusso OracleLob corrente.Sets the position on the current OracleLob stream.

SetLength(Int64)

Imposta la lunghezza del flusso OracleLob su un valore inferiore alla lunghezza corrente.Sets the length of the OracleLob stream to a value less than the current length.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)
Write(Byte[], Int32, Int32)

Consente di scrivere una sequenza di byte nel flusso OracleLob corrente e di fare avanzare la posizione corrente all'interno di questo flusso del numero di byte scritti.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>)

Quando ne viene eseguito l'override in una classe derivata, scrive una sequenza di byte nel flusso corrente e passa alla posizione successiva all'interno del flusso corrente in base al numero di byte scritti.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.

(Ereditato da Stream)
WriteAsync(Byte[], Int32, Int32)

Scrive in modo asincrono una sequenza di byte nel flusso corrente e passa alla posizione successiva nel flusso in base al numero di byte scritti.Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(Ereditato da Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Scrive in modo asincrono una sequenza di byte nel flusso corrente e passa alla posizione successiva all'interno del flusso corrente in base al numero di byte scritti e monitora le richieste di annullamento.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.

(Ereditato da Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Scrive in modo asincrono una sequenza di byte nel flusso corrente e passa alla posizione successiva all'interno del flusso corrente in base al numero di byte scritti e monitora le richieste di annullamento.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.

(Ereditato da Stream)
WriteByte(Byte)

Scrive un byte nella posizione corrente del flusso OracleLob e sposta in avanti di un byte la posizione all'interno del flusso.Writes a byte to the current position in the OracleLob stream, and advances the position within the stream by one byte.

Implementazioni dell'interfaccia esplicita

IDisposable.Dispose()

Rilascia tutte le risorse usate da Stream.Releases all resources used by the Stream.

(Ereditato da Stream)

Si applica a