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 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 BFILE
LOB
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 ilBFILE
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 LOB
nel 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 LOB
database 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 BeginWrite
metodi , EndWrite
e 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 |
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 |
FileName |
Ottiene il nome del |
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) |
|
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 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. |