OracleLob Classe

Definizione

Rappresenta un tipo di dati Large Object Binary (LOB) memorizzato su un server Oracle. La classe non può essere ereditata.

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 oggetto OracleLob differisce da in quanto OracleBFile i dati vengono archiviati nel server anziché in un file fisico nel sistema operativo. Può anche essere un oggetto read-write, a differenza di un OracleBFileoggetto , che è sempre di sola lettura.

Un OracleLob oggetto può essere uno di questi OracleType tipi di dati.

Tipo di dati OracleType Descrizione
Blob Tipo di dati Oracle BLOB che contiene dati binari con dimensioni massime di 4 gigabyte (GB). Esegue il mapping a un oggetto Array di tipo Byte.
Clob Tipo di dati Oracle CLOB che contiene dati di carattere, in base al set di caratteri predefinito nel server, con dimensioni massime di 4 GB. Esegue il mapping a String.
NClob Tipo di dati Oracle NCLOB che contiene dati di carattere, in base al set di caratteri nazionali nel server con dimensioni massime di 4 GB. Esegue il mapping a String.

Uno sviluppatore di applicazioni .NET può recuperare i valori Oracle LOB in tipi di dati .NET di base, ad esempio Array tipo e , Stringo il tipo di Byte dati specializzatoOracleLob. La OracleLob classe supporta la lettura dei dati da e la scrittura in Oracle LOB nel database Oracle.

Di seguito sono riportate le caratteristiche principali di un OracleLob tipo di dati che la distingue dai tipi di dati .NET di base:

  • Dopo aver recuperato il valore Oracle dal database Oracle LOB nella OracleLob classe, è possibile modificare i dati in una transazione aperta e le LOB modifiche vengono riflesse direttamente nel database. Se si recupera il valore Oracle LOB in un Array tipo Byte o String si aggiornano queste matrici, le modifiche non vengono riflesse nel database.

  • Quando si usa la OracleLob classe per accedere a un blocco di un LOB valore, solo il blocco viene passato dal database Oracle al client. Quando si usa il GetChars metodo per accedere a un blocco di un LOB valore, l'intero contenuto del valore viene passato dal database Oracle al client.

Per ottenere un OracleLob oggetto, chiamare il GetOracleLob metodo .

È possibile costruire un oggetto OracleLob NULL usando questo formato:

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

Questa tecnica viene usata principalmente per verificare se un LOB restituito dal server è NULL, come illustrato in questo esempio:

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

Un valore NULL LOB si comporta in modo analogo a un byte LOB zero in che Read riesce e restituisce sempre zero byte.

Se si seleziona una colonna contenente un LOB valore Null, viene restituito Null.

È necessario avviare una transazione prima di ottenere un oggetto temporaneo LOB. In caso contrario, potrebbe OracleDataReader non riuscire a ottenere i dati in un secondo momento.

È anche possibile aprire un oggetto temporaneo LOB in Oracle chiamando il DBMS_LOB. Stored procedure di sistema CREATETEMPORARY e associazione di un LOB parametro di output. Sul lato client, un comportamento temporaneo LOB si comporta come una tabella basata su LOB. Ad esempio, per aggiornare l'oggetto temporaneo LOB, deve essere racchiuso in una transazione.

Nell'esempio seguente viene illustrato come aprire un oggetto temporaneo 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(); 

Nota

Il metodo ereditato ha esito negativo WriteByte se usato con i dati dei caratteri e viene generato un InvalidOperationException oggetto . Al suo posto usa il metodo Write.

Gli s temporanei LOBvengono chiusi solo quando la connessione viene chiusa, ma con pooling e sotto carico, LOBla chiusura temporanea non viene chiusa. Questo può essere risolto eliminando il temporaneo LOB, richiamando tempLob.Dispose().

Campi

Null

Rappresenta un oggetto OracleLob null.

Proprietà

CanRead

Ottiene un valore che indica se è possibile leggere il flusso del tipo di dati LOB.

CanSeek

Ottiene un valore che indica se è possibile eseguire operazioni di ricerca avanti e indietro.

CanTimeout

Ottiene un valore che determina se il flusso corrente prevede il timeout.

(Ereditato da Stream)
CanWrite

Restituisce sempre true, indipendentemente dal fatto che il tipo di dati LOB supporti o meno la scrittura.

ChunkSize

Ottiene un valore che indica il numero minimo di byte da recuperare da o inviare al server durante un'operazione di lettura/scrittura.

Connection

Ottiene l'oggetto OracleConnection utilizzato da questa istanza dell'oggetto OracleLob.

IsBatched

Ottiene un valore che indica se è stato chiamato il metodo BeginBatch().

IsNull

Ottiene un valore che indica se l'oggetto OracleLob è un flusso Null.

IsTemporary

Ottiene un valore che indica se l'oggetto OracleLob è un tipo di dati LOB temporaneo.

Length

Ottiene un valore che restituisce le dimensioni dell'oggetto OracleLob.

LobType

Ottiene un valore che restituisce il tipo di dati LOB.

Position

Ottiene la posizione di lettura corrente nel flusso OracleLob.

ReadTimeout

Ottiene o imposta un valore, in millisecondi, che determina per quanto tempo il flusso tenterà la lettura prima del timeout.

(Ereditato da Stream)
Value

Ottiene il valore del flusso di runtime del linguaggio comune equivalente al valore sottostante.

WriteTimeout

Ottiene o imposta un valore, in millisecondi, che determina per quanto tempo il flusso tenterà la scrittura prima del timeout.

(Ereditato da Stream)

Metodi

Append(OracleLob)

Aggiunge i dati dal tipo di dati LOB specificato al tipo di dati LOB corrente.

BeginBatch()

Impedisce l'attivazione di trigger lato server durante l'esecuzione di più operazioni di lettura.

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.

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

Inizia un'operazione di lettura asincrona. Si consiglia di usare ReadAsync(Byte[], Int32, Int32).

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

Inizia un'operazione di scrittura asincrona. Si consiglia di usare WriteAsync(Byte[], Int32, Int32).

(Ereditato da Stream)
Clone()

Crea un nuovo oggetto OracleLob che fa riferimento allo stesso tipo di dati LOB Oracle come oggetto OracleLob di origine.

Close()

Chiude il flusso corrente e rilascia le risorse a esso associate.

Close()

Chiude il flusso corrente e libera le risorse, come socket e handle di file, ad esso associate. Anziché chiamare questo metodo, assicurarsi che il flusso sia eliminato correttamente.

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

CopyTo(OracleLob)

Consente di copiare da questo oggetto OracleLob a un oggetto OracleLob di destinazione.

CopyTo(OracleLob, Int64)

Consente di copiare dall'oggetto OracleLob a un oggetto OracleLob di destinazione con la quantità specificata di dati.

CopyTo(Stream)

Legge i byte dal flusso corrente e li scrive in un altro flusso. Entrambe le posizioni dei flussi sono avanzate in base al numero di byte copiati.

(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. Entrambe le posizioni dei flussi sono avanzate in base al numero di byte copiati.

(Ereditato da Stream)
CopyToAsync(Stream)

Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso. Entrambe le posizioni dei flussi sono avanzate in base al numero di byte copiati.

(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. Entrambe le posizioni dei flussi sono avanzate in base al numero di byte copiati.

(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. Entrambe le posizioni dei flussi sono avanzate in base al numero di byte copiati.

(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. Entrambe le posizioni dei flussi sono avanzate in base al numero di byte copiati.

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

(Ereditato da MarshalByRefObject)
CreateWaitHandle()
Obsoleti.
Obsoleti.
Obsoleti.

Alloca un oggetto WaitHandle.

(Ereditato da Stream)
Dispose()

Rilascia le risorse utilizzate da questo oggetto.

Dispose()

Rilascia tutte le risorse usate da Stream.

(Ereditato da Stream)
Dispose(Boolean)

Rilascia le risorse non gestite usate da Stream e, facoltativamente, le risorse gestite.

(Ereditato da Stream)
DisposeAsync()

Consente di liberare in modo asincrono le risorse non gestite utilizzate da Stream.

(Ereditato da Stream)
EndBatch()

Consente di riprendere l'attivazione di trigger lato server dopo l'esecuzione di più operazioni di scrittura.

EndRead(IAsyncResult)

Attende il completamento della lettura asincrona in sospeso. Si consiglia di usare ReadAsync(Byte[], Int32, Int32).

(Ereditato da Stream)
EndWrite(IAsyncResult)

Termina un'operazione di scrittura asincrona. Si consiglia di usare WriteAsync(Byte[], Int32, Int32).

(Ereditato da Stream)
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
Erase()

Consente di cancellare tutti i dati da questo oggetto OracleLob.

Erase(Int64, Int64)

Consente di cancellare la quantità specificata di dati da questo oggetto OracleLob.

Flush()

Non è attualmente supportato.

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.

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

(Ereditato da Stream)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetLifetimeService()
Obsoleti.

Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza.

(Ereditato da MarshalByRefObject)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
InitializeLifetimeService()
Obsoleti.

Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente.

(Ereditato da MarshalByRefObject)
ObjectInvariant()
Obsoleti.

Fornisce supporto per un oggetto 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.

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.

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

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

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

(Ereditato da Stream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

Legge almeno un numero minimo di byte dal flusso corrente e sposta in avanti la posizione all'interno del flusso in base al numero di byte letti.

(Ereditato da Stream)
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken)

Legge in modo asincrono almeno un numero minimo di byte dal flusso corrente, sposta in avanti la posizione all'interno del flusso in base al numero di byte letti e monitora le richieste di annullamento.

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

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

count Legge il numero di byte dal flusso corrente e sposta in avanti la posizione all'interno del flusso.

(Ereditato da Stream)
ReadExactly(Span<Byte>)

Legge i byte dal flusso corrente e sposta in avanti la posizione all'interno del flusso fino a quando non viene riempito.buffer

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

Legge in modo asincrono count il numero di byte dal flusso corrente, sposta in avanti la posizione all'interno del flusso e monitora le richieste di annullamento.

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

Legge in modo asincrono i byte dal flusso corrente, sposta la posizione all'interno del flusso fino a quando non buffer viene riempito e monitora le richieste di annullamento.

(Ereditato da Stream)
Seek(Int64, SeekOrigin)

Imposta la posizione sul flusso OracleLob corrente.

SetLength(Int64)

Imposta la lunghezza del flusso OracleLob su un valore inferiore alla lunghezza corrente.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

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

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.

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

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

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

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

WriteByte(Byte)

Scrive un byte nella posizione corrente del flusso e sposta in avanti di un byte la posizione del flusso.

(Ereditato da Stream)

Implementazioni dell'interfaccia esplicita

IDisposable.Dispose()

Rilascia tutte le risorse usate da Stream.

(Ereditato da Stream)

Si applica a