OracleBFile Klasse

Definition

Stellt ein verwaltetes OracleBFile Objekt dar, das für die Arbeit mit dem 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 ist ein Oracle-Datentyp BFILELOB , 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 statt 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 dies:

  • Er enthält unstrukturierte Daten.

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

  • Verwendet Verweis-Kopiesemantik. Wenn Sie z. B. einen Kopiervorgang auf einem BFILE, nur der BFILE Locator (ein Verweis auf die Datei) ausführen, wird kopiert. Die Daten in der Datei werden nicht kopiert.

Der BFILE Datentyp sollte für Verweise LOBauf Große verwendet werden, die groß sind, und daher nicht praktisch, um in der Datenbank zu speichern. Es gibt Client-, Server- und Kommunikationsaufwand für die Verwendung eines BFILE Datentyps im Vergleich zum LOB Datentyp. Es ist effizienter, auf einen BFILE Zugriff zuzugreifen, wenn Sie nur eine kleine Datenmenge abrufen müssen. Es ist effizienter, auf datenbank-residente LOBObjekte 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 Objekt erstellt wurde, können Sie dessen Locator in Form eines OracleBFile Objekts mithilfe der oder ExecuteScalar der ExecuteReader Methoden abrufen.

Rufen Sie die GetOracleBFile Methode auf, um ein OracleBFile Objekt abzurufen.

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, mithilfe der Read Methoden Seek auf einen geschlossenen OracleBFile Zugriff zuzugreifen, öffnet automatisch einen OracleBFile Datenstrom.

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 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 , EndWriteund WriteByte Methoden, die von der System.IO.Stream Klasse geerbt werden, werden nicht unterstützt, da der BFILE Datentyp schreibgeschützt ist.

Felder

Name Beschreibung
Null

Stellt ein NULL-Objekt OracleBFile dar, das nicht an eine physische Datei gebunden ist.

Eigenschaften

Name Beschreibung
CanRead

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

CanSeek

Ruft einen Wert ab, der angibt, ob Forward-Seek- und Rückwärtssuche-Vorgänge ausgeführt werden können.

CanTimeout

Ruft einen Wert ab, der bestimmt, ob der aktuelle Datenstrom Timeout ausführen kann.

(Geerbt von Stream)
CanWrite

Ruft einen Wert ab, der angibt, ob das Objekt das Schreiben unterstützt.

Connection

Ruft die OracleConnection von dieser Instanz der OracleBFile.

DirectoryName

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

FileExists

Ruft einen Wert ab, der angibt, ob eine physische Datei, die Daten enthält BFILE , im Betriebssystem vorhanden ist.

FileName

Ruft den Namen des BFILE ohne den Pfad ab.

IsNull

Ruft einen Wert ab, der angibt, ob es OracleBFile sich um einen Null Datenstrom handelt.

Length

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

Position

Ruft die aktuelle Leseposition im OracleBFile Datenstrom ab.

ReadTimeout

Dient zum Abrufen oder Festlegen eines Werts in Millisekunden, der bestimmt, wie lange der Datenstrom vor dem Timeout zu lesen versucht.

(Geerbt von Stream)
Value

Ruft einen Array Typ Byte ab, der die OracleBFile Daten enthält.

WriteTimeout

Dient zum Abrufen oder Festlegen eines Werts in Millisekunden, der bestimmt, wie lange der Datenstrom versucht, vor dem Timeout zu schreiben.

(Geerbt von Stream)

Methoden

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

Startet einen asynchronen Lesevorgang. (Erwägen Sie stattdessen die Verwendung ReadAsync(Byte[], Int32, Int32) .)

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

Startet einen asynchronen Schreibvorgang. (Erwägen Sie stattdessen die Verwendung WriteAsync(Byte[], Int32, Int32) .)

(Geerbt von Stream)
Clone()

Erstellt eine Kopie dieses OracleBFile Objekts, das derselben physischen Datei zugeordnet ist wie das Original.

Close()

Schließt den aktuellen Datenstrom und gibt alle Ressourcen (z. B. Sockets und Dateihandles) frei, die dem aktuellen Datenstrom zugeordnet sind. Anstatt diese Methode aufzurufen, stellen Sie sicher, dass der Datenstrom ordnungsgemäß verworfen ist.

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

Kopiert von diesem OracleBFile in ein Ziel OracleLob mit der angegebenen Datenmenge, dem Quelloffset und dem Zieloffset.

CopyTo(OracleLob, Int64)

Kopiert den gesamten Inhalt dieses OracleBFile Elements an ein Ziel OracleLob am angegebenen Offset.

CopyTo(OracleLob)

Kopiert den gesamten Inhalt dieses OracleBFile Inhalts an den Anfang eines Ziels OracleLob.

CopyTo(Stream, Int32)

Liest die Bytes aus dem aktuellen Datenstrom und schreibt sie mithilfe einer angegebenen Puffergröße in einen anderen Datenstrom. Beide Datenströme werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CopyTo(Stream)

Liest die Bytes aus dem aktuellen Datenstrom und schreibt sie in einen anderen Datenstrom. Beide Datenströme werden um die Anzahl der kopierten Bytes erweitert.

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

Liest asynchron die Bytes aus dem aktuellen Datenstrom und schreibt sie in einen anderen Datenstrom, wobei eine angegebene Puffergröße und ein Abbruchtoken verwendet wird. Beide Datenströme werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CopyToAsync(Stream, Int32)

Liest die Bytes asynchron aus dem aktuellen Datenstrom und schreibt sie mithilfe einer angegebenen Puffergröße in einen anderen Datenstrom. Beide Datenströme werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CopyToAsync(Stream)

Liest die Bytes asynchron aus dem aktuellen Datenstrom und schreibt sie in einen anderen Datenstrom. Beide Datenströme werden um die Anzahl der kopierten Bytes erweitert.

(Geerbt von Stream)
CreateObjRef(Type)

Erstellt ein Objekt, das alle relevanten Informationen enthält, die zum Generieren eines Proxys erforderlich sind, der für die Kommunikation mit einem Remoteobjekt verwendet wird.

(Geerbt von MarshalByRefObject)
CreateWaitHandle()
Veraltet.

Ordnet ein WaitHandle Objekt zu.

(Geerbt von Stream)
Dispose()

Gibt alle Ressourcen frei, die von diesem Objekt verwendet werden.

Dispose()

Veröffentlicht alle ressourcen, die von der Stream.

(Geerbt von Stream)
Dispose(Boolean)

Gibt die nicht verwalteten Ressourcen frei, die von den Stream verwalteten Ressourcen verwendet werden, und gibt optional die verwalteten Ressourcen frei.

(Geerbt von Stream)
EndRead(IAsyncResult)

Wartet auf den Abschluss des ausstehenden asynchronen Lesevorgangs. (Erwägen Sie stattdessen die Verwendung ReadAsync(Byte[], Int32, Int32) .)

(Geerbt von Stream)
EndWrite(IAsyncResult)

Beendet einen asynchronen Schreibvorgang. (Erwägen Sie stattdessen die Verwendung 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 asynchron alle Puffer für diesen Datenstrom und bewirkt, dass alle gepufferten Daten auf das zugrunde liegende Gerät geschrieben werden.

(Geerbt von Stream)
FlushAsync(CancellationToken)

Löscht asynchron alle Puffer für diesen Datenstrom, bewirkt, dass alle gepufferten Daten auf das zugrunde liegende Gerät geschrieben werden, und überwacht Abbruchanforderungen.

(Geerbt von Stream)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetLifetimeService()

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

(Geerbt von MarshalByRefObject)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
InitializeLifetimeService()

Ruft ein Lebensdauerdienstobjekt ab, um die Lebensdauerrichtlinie für diese Instanz zu steuern.

(Geerbt von MarshalByRefObject)
MemberwiseClone()

Erstellt eine flache Kopie der 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 ein Contract.

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

Liest eine Abfolge von Bytes aus dem aktuellen OracleBFile Datenstrom und wechselt die Position innerhalb des Datenstroms um die Anzahl der gelesenen Bytes.

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

Liest asynchron eine Abfolge von Bytes aus dem aktuellen Datenstrom, wechselt die Position innerhalb des Datenstroms um die Anzahl der gelesenen Bytes und überwacht Abbruchanforderungen.

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

Liest asynchron eine Abfolge von Bytes aus dem aktuellen Datenstrom und wechselt die Position innerhalb des Datenstroms um die Anzahl der gelesenen Bytes.

(Geerbt von Stream)
ReadByte()

Liest ein Byte aus dem Datenstrom und wechselt die Position innerhalb des Datenstroms um ein Byte oder gibt -1 zurück, wenn am Ende des Datenstroms.

(Geerbt von Stream)
Seek(Int64, SeekOrigin)

Legt die Position für den aktuellen OracleBFile Datenstrom 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.

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

Schreibt asynchron eine Bytesequenz in den aktuellen Datenstrom, wechselt die aktuelle Position innerhalb dieses Datenstroms um die Anzahl der geschriebenen Bytes und überwacht Abbruchanforderungen.

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

Schreibt asynchron eine Bytesequenz in den aktuellen Datenstrom und wechselt die aktuelle Position innerhalb dieses Datenstroms um die Anzahl der geschriebenen Bytes.

(Geerbt von Stream)
WriteByte(Byte)

Schreibt ein Byte in die aktuelle Position im Datenstrom und wechselt die Position innerhalb des Datenstroms um ein Byte.

(Geerbt von Stream)

Explizite Schnittstellenimplementierungen

Name Beschreibung
IDisposable.Dispose()

Veröffentlicht alle ressourcen, die von der Stream.

(Geerbt von Stream)

Gilt für: