OracleLob Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 OracleLob valore diverso da OracleBFile quello in cui 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 leLOB
modifiche vengono riflesse direttamente nel database. Se si recupera il valore OracleLOB
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 unLOB
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 LOB
vengono chiusi solo quando la connessione viene chiusa, ma con pooling e sotto carico, LOB
la 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 |
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 |
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 |
Length |
Ottiene un valore che restituisce le dimensioni dell'oggetto OracleLob. |
LobType |
Ottiene un valore che restituisce il tipo di dati |
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 |
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 |
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) |
|
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. |
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
Legge in modo asincrono |
ReadExactlyAsync(Memory<Byte>, CancellationToken) |
Legge in modo asincrono i byte dal flusso corrente, sposta la posizione all'interno del flusso fino a quando non |
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) |
Metodi di estensione
CopyToAsync(Stream, PipeWriter, CancellationToken) |
Legge in modo asincrono i byte da Stream e li scrive nel PipeWriter specificato usando un token di annullamento. |