OracleBFile Classe

Definizione

Rappresenta un oggetto OracleBFile gestito progettato per l'utilizzo con il tipo di dati BFILE Oracle. La classe non può essere ereditata.

public ref class OracleBFile sealed : System::IO::Stream, ICloneable, System::Data::SqlTypes::INullable
public sealed class OracleBFile : System.IO.Stream, ICloneable, System.Data.SqlTypes.INullable
type OracleBFile = class
    inherit Stream
    interface ICloneable
    interface IDisposable
    interface INullable
type OracleBFile = class
    inherit Stream
    interface ICloneable
    interface INullable
    interface IDisposable
Public NotInheritable Class OracleBFile
Inherits Stream
Implements ICloneable, INullable
Ereditarietà
Implementazioni

Commenti

Il tipo di dati Oracle è un tipo di dati Oracle BFILELOB che contiene un riferimento ai dati binari con una dimensione massima di 4 gigabyte. Un oggetto Oracle BFILE differisce da altri tipi di dati Oracle LOB in quanto i relativi dati vengono archiviati in un file fisico nel sistema operativo anziché nel server. Si noti che il tipo di dati fornisce l'accesso BFILE in sola lettura ai dati. Pertanto, i metodi orientati alla scrittura ereditati dalla Stream classe non sono supportati.

Altre caratteristiche di un BFILE tipo di dati che la distinguono da un LOB tipo di dati sono le seguenti:

  • Contiene dati non strutturati.

  • Supporta il chunking sul lato server.

  • Usa la semantica di copia di riferimenti. Ad esempio, se si esegue un'operazione di copia in un BFILE, viene copiato solo il BFILE localizzatore (ovvero un riferimento al file). I dati nel file non vengono copiati.

Il BFILE tipo di dati deve essere usato per fare riferimento a s di grandi dimensioni e pertanto non è pratico archiviare LOBnel database. Esiste un sovraccarico client, server e comunicazione per l'uso di un BFILE tipo di dati rispetto al LOB tipo di dati. È più efficiente accedere a un BFILE se è necessario ottenere solo una piccola quantità di dati. È più efficiente accedere ai residenti del LOBdatabase se è necessario ottenere l'intero oggetto.

Ogni oggetto non NULL OracleBFile è associato a due entità che definiscono il percorso del file fisico sottostante:

  • Un oggetto DIRECTORY Oracle, che è un alias del database per una directory nel file system e

  • Il nome del file fisico sottostante, che si trova nella directory associata all'oggetto DIRECTORY.

Dopo aver creato un oggetto BFILE , è possibile recuperare il relativo localizzatore sotto forma di OracleBFile oggetto usando i ExecuteReader metodi o ExecuteScalar .

Per ottenere un OracleBFile oggetto, chiamare il GetOracleBFile metodo .

Il file fisico associato a un OracleBFile oggetto non deve esistere finché non si tenta di accedervi. Un'applicazione può associare un oggetto OracleBFile a un file inesistente, creare il file fisico nel percorso previsto e quindi chiamare Read.

Qualsiasi tentativo di accesso a un oggetto chiuso OracleBFile usando i Read metodi o Seek riaprirà automaticamente un OracleBFile flusso.

Nell'esempio C# seguente viene illustrato come creare un BFILE oggetto in una tabella Oracle e quindi recuperarlo sotto forma di OracleBFile oggetto. L'esempio illustra l'uso dell'oggetto OracleDataReader e dei OracleBFileSeek metodi e Read .

private void GetOracleBFile(string connectionString)
{
    //Create and open the connection.
    using (OracleConnection connection = new OracleConnection(connectionString))
    {
        connection.Open();

        //Create and execute the commands.
        OracleCommand command = connection.CreateCommand();
        command.CommandText = "CREATE OR REPLACE DIRECTORY TestDir AS 'c:\\bfiles'";
        command.ExecuteNonQuery();
        command.CommandText = "CREATE TABLE TestTable(col1 number, col2 BFILE)";
        command.ExecuteNonQuery();
        command.CommandText = "INSERT INTO TestTable VALUES ('2', BFILENAME('TESTDIR', 'File.jpg'))";
        command.ExecuteNonQuery();
        command.CommandText = "SELECT * FROM TestTable";

        //Read the BFile data.
        byte[] buffer = new byte[100];
        OracleDataReader dataReader = command.ExecuteReader();
        using (dataReader)
        {
            if (dataReader.Read())
            {
                OracleBFile BFile = dataReader.GetOracleBFile(1);
                using (BFile)
                {
                    BFile.Seek(0, SeekOrigin.Begin);
                    BFile.Read(buffer, 0, 100);
                }
            }
        }
    }
    return;
}

Per altre informazioni sulla creazione e l'uso di un oracle BFILE, vedere l'argomento appropriato nella documentazione di Oracle.

Nota

I BeginWritemetodi , EndWritee WriteByte ereditati dalla System.IO.Stream classe non sono supportati perché il BFILE tipo di dati è di sola lettura.

Campi

Null

Rappresenta un oggetto OracleBFile null non associato a un file fisico.

Proprietà

CanRead

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

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

Ottiene un valore che indica se l'oggetto supporta la scrittura.

Connection

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

DirectoryName

Ottiene il nome dell'oggetto DIRECTORY, a cui è associato un oggetto OracleBFile.

FileExists

Ottiene un valore che indica se un file fisico contenente dati BFILE è presente nel sistema operativo.

FileName

Ottiene il nome del BFILE senza percorso.

IsNull

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

Length

Ottiene un valore che restituisce la lunghezza in byte del file fisico a cui è associato l'oggetto OracleBFile.

Position

Ottiene la posizione di lettura corrente nel flusso OracleBFile.

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 un oggetto Array di tipo Byte che contiene i dati OracleBFile.

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

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

Consente di creare una copia di questo oggetto OracleBFile associato allo stesso file fisico dell'originale.

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 da questo oggetto OracleBFile in un oggetto OracleLob di destinazione con la quantità di dati specificata, l'offset di origine e quello di destinazione.

CopyTo(OracleLob)

Consente di copiare l'intero contenuto di questo oggetto OracleBFile all'inizio di un oggetto OracleLob di destinazione.

CopyTo(OracleLob, Int64)

Consente di copiare l'intero contenuto di questo oggetto OracleBFile in un oggetto OracleLob di destinazione all'offset specificato.

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 tutte 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)
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)
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 OracleBFile 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 OracleBFile corrente.

SetFileName(String, String)

Associa l'oggetto OracleBFile a un altro file nel sistema operativo.

SetLength(Int64)

Non è attualmente supportato.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

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

Non è attualmente supportato.

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

Si applica a