OracleBFile 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 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 ilBFILElocalizzatore (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 |
| 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 |
| FileName |
Ottiene il nome dell'oggetto |
| 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) |