Teilen über


OracleBFile Klasse

Definition

Stellt ein verwaltetes OracleBFile-Objekt dar, das für den Oracle-Datentyp BFILE entwickelt wurde. Diese Klasse kann nicht vererbt werden.

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
Vererbung
Implementiert

Hinweise

Der Oracle-Datentyp BFILE ist ein Oracle-Datentyp LOB , der einen Verweis auf Binärdaten mit einer maximalen Größe von 4 Gigabyte enthält. Ein Oracle BFILE unterscheidet sich von anderen Oracle-Datentypen LOB darin, dass seine Daten in einer physischen Datei im Betriebssystem und nicht auf dem Server gespeichert werden. Beachten Sie, dass der BFILE Datentyp schreibgeschützten Zugriff auf Daten bietet. Daher werden schreiborientierte Methoden, die von der Stream -Klasse geerbt werden, nicht unterstützt.

Andere Merkmale eines BFILE Datentyps, die ihn von einem LOB Datentyp unterscheiden, sind:

  • Er enthält unstrukturierte Daten.

  • Er unterstützt das serverseitige Aufteilen in kleine Blöcke.

  • Er verwendet die Semantik zum Kopieren von Verweisen. Wenn Sie beispielsweise einen Kopiervorgang für einen BFILEausführen, wird nur der BFILE Locator (ein Verweis auf die Datei) kopiert. Die Daten in der Datei werden nicht kopiert.

Der BFILE Datentyp sollte verwendet werden, um auf s zu verweisen LOB, die groß sind und daher nicht in der Datenbank gespeichert werden können. Es gibt client-, server- und kommunikationsaufwand für die Verwendung eines BFILE Datentyps LOB im Vergleich zum Datentyp. Der Zugriff auf eine BFILE ist effizienter, wenn Sie nur eine kleine Datenmenge abrufen müssen. Es ist effizienter, auf datenbankresidente LOBs zuzugreifen, wenn Sie das gesamte Objekt abrufen müssen.

Jedes Nicht-NULL-Objekt OracleBFile ist zwei Entitäten zugeordnet, die den Speicherort der zugrunde liegenden physischen Datei definieren:

  • Ein Oracle-DIRECTORY-Objekt, das als Datenbank-Alias für ein Verzeichnis im Dateisystem fungiert.

  • Der Dateiname der zugrunde liegenden physischen Datei, die sich in dem dem DIRECTORY-Objekt zugeordneten Verzeichnis befindet.

Nachdem ein BFILE erstellt wurde, können Sie seinen Locator in Form eines OracleBFile Objekts mithilfe der ExecuteReader -Methode oder ExecuteScalar abrufen.

Um ein OracleBFile Objekt abzurufen, rufen Sie die -Methode auf GetOracleBFile .

Die physische Datei, der ein OracleBFile Objekt zugeordnet ist, muss erst vorhanden sein, wenn Sie versuchen, darauf zuzugreifen. Eine Anwendung kann eine OracleBFile an eine nicht vorhandene Datei binden, die physische Datei am erwarteten Speicherort erstellen und dann aufrufen Read.

Jeder Versuch, mit den Methoden oder Seek auf ein geschlossenes OracleBFile Objekt zuzugreifen, wird automatisch wieder geöffnetOracleBFile.Read

Im folgenden C#-Beispiel wird veranschaulicht, wie Sie eine BFILE in einer Oracle-Tabelle erstellen und dann in Form eines OracleBFile -Objekts abrufen können. Das Beispiel veranschaulicht die Verwendung des OracleDataReader -Objekts und der OracleBFileSeek -Methoden und 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;
}

Weitere Informationen zum Erstellen und Verwenden eines Oracle BFILEfinden Sie im entsprechenden Thema in Ihrer Oracle-Dokumentation.

Hinweis

Die BeginWriteMethoden , EndWrite, und WriteByte , die von der System.IO.Stream -Klasse geerbt werden, werden nicht unterstützt, da der BFILE Datentyp schreibgeschützt ist.

Felder

Null

Stellt ein OracleBFile-Objekt dar, das NULL ist und an keine physikalische Datei gebunden ist.

Eigenschaften

CanRead

Ruft einen Wert ab, der angibt, ob der BFILE-Stream gelesen werden kann.

CanSeek

Ruft einen Wert ab, der angibt, ob Suchvorgänge vorwärts und rückwärts ausgeführt werden können.

CanTimeout

Ruft einen Wert ab, der bestimmt, ob für den aktuellen Stream ein Timeout möglich ist.

(Geerbt von Stream)
CanWrite

Ruft einen Wert ab, der angibt, ob das Objekt Schreibvorgänge unterstützt.

Connection

Ruft die von dieser Instanz von OracleConnection verwendete OracleBFile ab.

DirectoryName

Ruft den Namen des DIRECTORY-Objekts ab, dem ein OracleBFile-Objekt zugeordnet ist.

FileExists

Ruft einen Wert ab, der angibt, ob eine physikalische Datei mit BFILE-Daten im Betriebssystem vorhanden ist.

FileName

Ruft den Namen der BFILE ohne den Pfad ab.

IsNull

Ruft einen Wert ab, der angibt, ob OracleBFile ein Null-Stream ist.

Length

Ruft einen Wert ab, der die Länge der physikalischen Datei in Bytes zurückgibt, der das OracleBFile-Objekt zugeordnet ist.

Position

Ruft die aktuelle Leseposition im OracleBFile-Stream ab.

ReadTimeout

Ruft einen Wert in Millisekunden ab, der bestimmt, wie lange der Stream versucht, Lesevorgänge durchzuführen, bevor ein Timeout auftritt, oder legt diesen fest.

(Geerbt von Stream)
Value

Ruft ein Array vom Typ Byte ab, das die OracleBFile-Daten enthält.

WriteTimeout

Ruft einen Wert in Millisekunden ab, der bestimmt, wie lange der Stream versucht, Schreibvorgänge durchzuführen, bevor ein Timeout auftritt, oder legt diesen fest.

(Geerbt von Stream)

Methoden

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

Beginnt einen asynchronen Lesevorgang. (Verwenden Sie stattdessen ReadAsync(Byte[], Int32, Int32).)

(Geerbt von Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Beginnt einen asynchronen Schreibvorgang. (Verwenden Sie stattdessen WriteAsync(Byte[], Int32, Int32).)

(Geerbt von Stream)
Clone()

Erstellt eine Kopie dieses OracleBFile-Objekts, die derselben physikalischen Datei wie das Original zugeordnet ist.

Close()

Schließt den aktuellen Stream und gibt alle dem aktuellen Stream zugeordneten Ressourcen frei (z. B. Sockets und Dateihandles). Anstatt diese Methode aufzurufen, stellen Sie sicher, dass der Stream ordnungsgemäß freigegeben wird.

(Geerbt von Stream)
CopyTo(Int64, OracleLob, Int64, Int64)

Kopiert die angegebene Datenmenge vom angegebenen Quelloffset dieser OracleBFile an den angegebenen Zieloffset eines Ziel-OracleLob.

CopyTo(OracleLob)

Kopiert den gesamten Inhalt dieser OracleBFile an den Anfang eines Ziel-OracleLob.

CopyTo(OracleLob, Int64)

Kopiert den gesamten Inhalt dieser OracleBFile am angegebenen Offset in ein Ziel-OracleLob.

CopyTo(Stream)

Liest alle Bytes aus dem aktuellen Stream und schreibt sie in einen anderen Datenstrom. Beide Streamspositionen werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CopyTo(Stream, Int32)

Liest alles Bytes aus dem aktuellen Datenstrom und schreibt sie unter Verwendung einer angegebenen Puffergröße in einen anderen Datenstrom. Beide Streamspositionen werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CopyToAsync(Stream)

Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie in einen anderen Stream. Beide Streamspositionen werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CopyToAsync(Stream, CancellationToken)

Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie unter Verwendung eines angegebenen Abbruchtokens in einen anderen Stream. Beide Streamspositionen werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CopyToAsync(Stream, Int32)

Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie unter Verwendung einer angegebenen Puffergröße in einen anderen Stream. Beide Streamspositionen werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie unter Verwendung einer angegebenen Puffergröße und eines Abbruchtokens in einen anderen Stream. Beide Streamspositionen werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CreateObjRef(Type)

Erstellt ein Objekt mit allen relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt erforderlich sind.

(Geerbt von MarshalByRefObject)
CreateWaitHandle()
Veraltet.
Veraltet.
Veraltet.

Reserviert ein WaitHandle-Objekt.

(Geerbt von Stream)
Dispose()

Gibt alle von diesem Objekt verwendeten Ressourcen frei.

Dispose()

Gibt alle vom Stream verwendeten Ressourcen frei.

(Geerbt von Stream)
Dispose(Boolean)

Gibt die von Stream verwendeten nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei.

(Geerbt von Stream)
DisposeAsync()

Gibt die nicht verwalteten Ressourcen, die von der Stream verwendet werden, asynchron frei.

(Geerbt von Stream)
EndRead(IAsyncResult)

Wartet, bis der ausstehende asynchrone Lesevorgang abgeschlossen ist. (Verwenden Sie stattdessen ReadAsync(Byte[], Int32, Int32).)

(Geerbt von Stream)
EndWrite(IAsyncResult)

Beendet einen asynchronen Schreibvorgang. (Verwenden Sie stattdessen WriteAsync(Byte[], Int32, Int32).)

(Geerbt von Stream)
Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
Flush()

Wird derzeit nicht unterstützt.

FlushAsync()

Löscht sämtliche Puffer für diesen Stream asynchron und veranlasst die Ausgabe aller gepufferten Daten an das zugrunde liegende Gerät.

(Geerbt von Stream)
FlushAsync(CancellationToken)

Löscht alle Puffer für diesen Stream asynchron und veranlasst die Ausgabe aller gepufferten Daten an das zugrunde liegende Gerät und überwacht Abbruchanforderungen.

(Geerbt von Stream)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetLifetimeService()
Veraltet.

Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinien für diese Instanz steuert.

(Geerbt von MarshalByRefObject)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
InitializeLifetimeService()
Veraltet.

Ruft ein Lebensdauerdienstobjekt zur Steuerung der Lebensdauerrichtlinie für diese Instanz ab.

(Geerbt von MarshalByRefObject)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
MemberwiseClone(Boolean)

Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts.

(Geerbt von MarshalByRefObject)
ObjectInvariant()
Veraltet.

Bietet Unterstützung für einen Contract.

(Geerbt von Stream)
Read(Byte[], Int32, Int32)

Liest eine Folge von Bytes aus dem aktuellen OracleBFile-Stream und verschiebt die Position im Stream um die Anzahl der gelesen Bytes nach vorn.

Read(Span<Byte>)

Liest beim Überschreiben in einer abgeleiteten Klasse eine Folge von Bytes aus dem aktuellen Stream und erhöht die Position im Stream um die Anzahl der gelesenen Bytes.

(Geerbt von Stream)
ReadAsync(Byte[], Int32, Int32)

Liest eine Bytesequenz asynchron aus dem aktuellen Stream und setzt die Position in diesem Stream um die Anzahl der gelesenen Bytes nach vorn.

(Geerbt von Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Liest eine Folge von Bytes asynchron aus aktuellen Stream, erhöht die Position im Stream um die Anzahl der gelesenen Bytes und überwacht Abbruchanfragen.

(Geerbt von Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Liest eine Folge von Bytes asynchron aus aktuellen Stream, erhöht die Position im Stream um die Anzahl der gelesenen Bytes und überwacht Abbruchanfragen.

(Geerbt von Stream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

Liest mindestens eine Mindestanzahl von Bytes aus dem aktuellen Stream und erhöht die Position innerhalb des Datenstroms um die Anzahl der gelesenen Bytes.

(Geerbt von Stream)
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken)

Liest asynchron mindestens eine Mindestanzahl von Bytes aus dem aktuellen Stream, erhöht die Position innerhalb des Datenstroms um die Anzahl der gelesenen Bytes und überwacht Abbruchanforderungen.

(Geerbt von Stream)
ReadByte()

Liest ein Byte aus dem Stream und erhöht die Position im Stream um ein Byte, oder gibt -1 zurück, wenn das Ende des Streams erreicht ist.

(Geerbt von Stream)
ReadExactly(Byte[], Int32, Int32)

Liest count die Anzahl der Bytes aus dem aktuellen Stream und erhöht die Position innerhalb des Datenstroms.

(Geerbt von Stream)
ReadExactly(Span<Byte>)

Liest Bytes aus dem aktuellen Stream und erhöht die Position innerhalb des Datenstroms, bis der buffer gefüllt ist.

(Geerbt von Stream)
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken)

Liest count asynchron die Anzahl von Bytes aus dem aktuellen Stream, erhöht die Position im Stream und überwacht Abbruchanforderungen.

(Geerbt von Stream)
ReadExactlyAsync(Memory<Byte>, CancellationToken)

Liest Bytes asynchron aus dem aktuellen Stream, erhöht die Position innerhalb des Datenstroms, bis der buffer gefüllt ist, und überwacht Abbruchanforderungen.

(Geerbt von Stream)
Seek(Int64, SeekOrigin)

Legt die Position im aktuellen OracleBFile-Stream fest.

SetFileName(String, String)

Bindet das OracleBFile-Objekt an eine andere Datei im Betriebssystem.

SetLength(Int64)

Wird derzeit nicht unterstützt.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
Write(Byte[], Int32, Int32)

Wird derzeit nicht unterstützt.

Write(ReadOnlySpan<Byte>)

Schreibt beim Überschreiben in einer abgeleiteten Klasse eine Folge von Bytes in den aktuellen Stream und erhöht die aktuelle Position im Stream um die Anzahl der geschriebenen Bytes.

(Geerbt von Stream)
WriteAsync(Byte[], Int32, Int32)

Schreibt eine Bytesequenz asynchron in den aktuellen Stream und setzt die aktuelle Position in diesem Stream um die Anzahl der geschriebenen Bytes nach vorn.

(Geerbt von Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Schreibt beim Überschreiben in einer abgeleiteten Klasse eine Folge von Bytes asynchron in den aktuellen Stream und erhöht die aktuelle Position im Stream um die Anzahl der geschriebenen Bytes und überwacht Abbruchanforderungen.

(Geerbt von Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Schreibt beim Überschreiben in einer abgeleiteten Klasse eine Folge von Bytes asynchron in den aktuellen Stream und erhöht die aktuelle Position im Stream um die Anzahl der geschriebenen Bytes und überwacht Abbruchanforderungen.

(Geerbt von Stream)
WriteByte(Byte)

Schreibt ein Byte an die aktuellen Position im Stream und erhöht die aktuelle Position im Stream um ein Byte.

(Geerbt von Stream)

Explizite Schnittstellenimplementierungen

IDisposable.Dispose()

Gibt alle vom Stream verwendeten Ressourcen frei.

(Geerbt von Stream)

Erweiterungsmethoden

CopyToAsync(Stream, PipeWriter, CancellationToken)

Liest die Bytes asynchron aus der Stream-Klasse und schreibt sie unter Verwendung eines Abbruchtokens in die angegebene PipeWriter-Klasse.

Gilt für: