OracleBFile Classe

Definizione

Rappresenta un oggetto gestito OracleBFile progettato per funzionare con il tipo di dati Oracle BFILE . 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 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. Di conseguenza, 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 la suddivisione in blocchi sul lato server.

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

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

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

  • Un oggetto DIRECTORY Oracle, che è un alias di database di 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 recuperarne il localizzatore sotto forma di oggetto OracleBFile utilizzando i ExecuteReader metodi o ExecuteScalar .

Per ottenere un OracleBFile oggetto, chiamare il GetOracleBFile metodo .

Il file fisico a cui è associato un OracleBFile oggetto non deve esistere fino a quando 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 riapre automaticamente un OracleBFile flusso.

Nell'esempio C# seguente viene illustrato come creare un oggetto BFILE in una tabella Oracle e quindi recuperarlo sotto forma di oggetto OracleBFile . Nell'esempio viene illustrato l'utilizzo 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.

Note

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

Campi

Nome Descrizione
Null

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

Proprietà

Nome Descrizione
CanRead

Ottiene un valore che indica se il BFILE flusso può essere letto.

CanSeek

Ottiene un valore che indica se è possibile eseguire operazioni forward-seek e backward-seek.

CanTimeout

Ottiene un valore che determina se il flusso corrente può verificarsi un 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 di OracleBFile.

DirectoryName

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

FileExists

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

FileName

Ottiene il nome dell'oggetto BFILE senza il percorso.

IsNull

Ottiene un valore che indica se è OracleBFile un Null flusso.

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

ReadTimeout

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

(Ereditato da Stream)
Value

Ottiene un Array oggetto di tipo Byte che contiene i OracleBFile dati.

WriteTimeout

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

(Ereditato da Stream)

Metodi

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

Avvia un'operazione di lettura asincrona. Prendere invece in considerazione l'uso ReadAsync(Byte[], Int32, Int32) di .

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

Avvia un'operazione di scrittura asincrona. Prendere invece in considerazione l'uso WriteAsync(Byte[], Int32, Int32) di .

(Ereditato da Stream)
Clone()

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

Close()

Chiude il flusso corrente e rilascia tutte le risorse (ad esempio socket e handle di file) associate al flusso corrente. Invece di chiamare questo metodo, assicurarsi che il flusso sia eliminato correttamente.

(Ereditato da Stream)
CopyTo(Int64, OracleLob, Int64, Int64)

Copia da questo OracleBFile oggetto a una destinazione OracleLob con la quantità specificata di dati, l'offset di origine e l'offset di destinazione.

CopyTo(OracleLob, Int64)

Copia l'intero contenuto di questo OracleBFile oggetto in una destinazione OracleLob in corrispondenza dell'offset specificato.

CopyTo(OracleLob)

Copia l'intero contenuto di questo OracleBFile oggetto all'inizio di una destinazione OracleLob.

CopyTo(Stream, Int32)

Legge i byte dal flusso corrente e li scrive in un altro flusso, usando una dimensione del buffer specificata. Entrambe le posizioni dei flussi sono avanzate in base al numero di byte copiati.

(Ereditato da Stream)
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)
CopyToAsync(Stream, Int32, CancellationToken)

Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso, usando una dimensione del buffer e un token di annullamento specificati. Entrambe le posizioni dei flussi sono avanzate in base al numero di byte copiati.

(Ereditato da Stream)
CopyToAsync(Stream, Int32)

Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso, usando una dimensione del 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)
CreateObjRef(Type)

Crea un oggetto che contiene tutte le informazioni pertinenti necessarie per generare un proxy utilizzato per comunicare con un oggetto remoto.

(Ereditato da MarshalByRefObject)
CreateWaitHandle()
Obsoleti.

Alloca un WaitHandle oggetto .

(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, rilascia le risorse gestite.

(Ereditato da Stream)
EndRead(IAsyncResult)

Attende il completamento della lettura asincrona in sospeso. Prendere invece in considerazione l'uso ReadAsync(Byte[], Int32, Int32) di .

(Ereditato da Stream)
EndWrite(IAsyncResult)

Termina un'operazione di scrittura asincrona. Prendere invece in considerazione l'uso WriteAsync(Byte[], Int32, Int32) di .

(Ereditato da Stream)
Equals(Object)

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

(Ereditato da Object)
Flush()

Attualmente non supportata.

FlushAsync()

Cancella in modo asincrono tutti i buffer per questo flusso e determina la scrittura di tutti i dati memorizzati nel buffer nel dispositivo sottostante.

(Ereditato da Stream)
FlushAsync(CancellationToken)

Cancella in modo asincrono tutti i buffer per questo flusso, determina la scrittura di tutti i 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()

Recupera l'oggetto servizio di durata corrente che controlla i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
InitializeLifetimeService()

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

(Ereditato da MarshalByRefObject)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia superficiale dell'oggetto corrente MarshalByRefObject .

(Ereditato da MarshalByRefObject)
ObjectInvariant()
Obsoleti.

Fornisce il supporto per un oggetto Contract.

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

Legge una sequenza di byte dal flusso corrente OracleBFile e sposta in avanti la posizione all'interno del flusso in base al numero di byte letti.

ReadAsync(Byte[], Int32, Int32, CancellationToken)

Legge in modo asincrono una sequenza 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)
ReadAsync(Byte[], Int32, Int32)

Legge in modo asincrono una sequenza 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)
ReadByte()

Legge un byte dal flusso e sposta in avanti la posizione all'interno del flusso di un byte oppure restituisce -1 se alla fine del flusso.

(Ereditato da Stream)
Seek(Int64, SeekOrigin)

Imposta la posizione nel flusso corrente OracleBFile .

SetFileName(String, String)

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

SetLength(Int64)

Attualmente non supportata.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

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

Attualmente non supportata.

WriteAsync(Byte[], Int32, Int32, CancellationToken)

Scrive in modo asincrono una sequenza di byte nel flusso corrente, sposta in avanti la posizione corrente all'interno del flusso in base al numero di byte scritti e monitora le richieste di annullamento.

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

Scrive in modo asincrono una sequenza di byte nel flusso corrente e sposta in avanti la posizione corrente all'interno del flusso in base al numero di byte scritti.

(Ereditato da Stream)
WriteByte(Byte)

Scrive un byte nella posizione corrente nel flusso e sposta in avanti la posizione all'interno del flusso di un byte.

(Ereditato da Stream)

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IDisposable.Dispose()

Rilascia tutte le risorse usate da Stream.

(Ereditato da Stream)

Si applica a