OracleBFile クラス

定義

Oracle の BFILE データ型で動作する、マネージド オブジェクト OracleBFile を表します。 このクラスは継承できません。

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
継承
実装

注釈

Oracle BFILE データ型は、最大サイズが 4 ギガバイトのバイナリ データへの参照を含む Oracle LOB データ型です。 Oracle BFILE は、そのデータがサーバーではなくオペレーティング システムの物理ファイルに格納されるという点で、他の Oracle LOB データ型とは異なります。 データ型は BFILE 、データへの読み取り専用アクセスを提供します。 そのため、 クラスから Stream 継承された書き込み指向メソッドはサポートされていません。

データ型と区別するデータ型の BFILE その他の特性は、 LOB 次のとおりです。

  • 非構造化データの保持。

  • サーバー側チャンキングのサポート。

  • 参照コピーのセマンティクスの使用。 たとえば、 に対 BFILEしてコピー操作を実行すると、ロケーター (ファイルへの参照) のみが BFILE コピーされます。 ファイル内のデータはコピーされません。

データ型は BFILE 、サイズが大きい を参照 LOBするために使用する必要があるため、データベースに格納するのは実用的ではありません。 データ型と比較して、データ型を BFILE 使用するためのクライアント、サーバー、および通信の LOB オーバーヘッドがあります。 少量のデータを取得するだけで済む場合は、 にアクセス BFILE する方が効率的です。 オブジェクト全体を取得する必要がある場合は、データベース常駐 LOBにアクセスする方が効率的です。

NULL OracleBFile 以外の各オブジェクトは、基になる物理ファイルの場所を定義する 2 つのエンティティに関連付けられます。

  • Oracle DIRECTORY オブジェクト。ファイル システムのディレクトリに対するデータベースのエイリアスです。

  • 基になる物理ファイルのファイル名。このファイルは、DIRECTORY オブジェクトに関連付けられたディレクトリに配置されています。

BFILEが作成されたら、 メソッドまたは ExecuteScalar メソッドを使用して、オブジェクトのOracleBFile形式でロケーターをExecuteReader取得できます。

オブジェクトを OracleBFile 取得するには、 メソッドを GetOracleBFile 呼び出します。

オブジェクトに OracleBFile 関連付けられている物理ファイルは、アクセスを試みるまで存在する必要はありません。 アプリケーションは、 を OracleBFile 存在しないファイルにバインドし、必要な場所に物理ファイルを作成し、 を呼び出 Readすことができます。

メソッドまたは Seek メソッドを使用して閉じた OracleBFileReadアクセスしようとすると、ストリームがOracleBFile自動的に再度開きます。

次の C# の例では、Oracle テーブルで を BFILE 作成し、オブジェクトの形式で取得する方法を OracleBFile 示します。 この例では、 オブジェクトと メソッドと Read メソッドのOracleDataReader使用方法をOracleBFileSeek示します。

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;
}

Oracle の作成と使用の詳細については、Oracle BFILEドキュメントの適切なトピックを参照してください。

注意

BeginWriteクラスからSystem.IO.Stream継承される 、EndWrite、および WriteByte の各メソッドは、データ型が読み取りBFILE専用であるため、サポートされていません。

フィールド

Null

物理ファイルにバインドされていない、null の OracleBFile オブジェクトを表します。

プロパティ

CanRead

BFILE ストリームを読み取ることができるかどうかを示す値を取得します。

CanSeek

前方シークおよび後方シーク操作を実行できるかどうかを示す値を取得します。

CanTimeout

現在のストリームがタイムアウトできるかどうかを決定する値を取得します。

(継承元 Stream)
CanWrite

オブジェクトが書き込みをサポートしているかどうかを示す値を取得します。

Connection

この OracleConnection のインスタンスで使用される OracleBFile を取得します。

DirectoryName

OracleBFile オブジェクトが関連付けられている DIRECTORY オブジェクトの名前を取得します。

FileExists

BFILE データを格納している物理ファイルがオペレーティング システム上に存在するかどうかを示す値を取得します。

FileName

パス名なしの BFILE の名前を取得します。

IsNull

OracleBFileNull ストリームであるかどうかを示す値を取得します。

Length

OracleBFile オブジェクトが関連付けられている物理ファイルの長さ (バイト数) を返す値を取得します。

Position

OracleBFile ストリーム内の現在の読み込み位置を取得します。

ReadTimeout

ストリームがタイムアウト前に読み取りを試みる期間を決定する値 (ミリ秒単位) を取得または設定します。

(継承元 Stream)
Value

Array データを格納している Byte 型の OracleBFile を取得します。

WriteTimeout

ストリームがタイムアウト前に書き込みを試行する期間を決定する値 (ミリ秒単位) を取得または設定します。

(継承元 Stream)

メソッド

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

非同期の読み込み動作を開始します。 (代わりに、ReadAsync(Byte[], Int32, Int32) の使用を検討してください。)

(継承元 Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

非同期の書き込み操作を開始します。 (代わりに、WriteAsync(Byte[], Int32, Int32) の使用を検討してください。)

(継承元 Stream)
Clone()

元のオブジェクトと同じ物理ファイルに関連付けられた、この OracleBFile オブジェクトのコピーを作成します。

Close()

現在のストリームを閉じ、現在のストリームに関連付けられているすべてのリソース (ソケット、ファイル ハンドルなど) を解放します。 このメソッドを呼び出す代わりに、ストリームが適切に破棄されていることを確認します。

(継承元 Stream)
CopyTo(Int64, OracleLob, Int64, Int64)

データ サイズ、コピー元のオフセット、およびコピー先のオフセットを指定して、この OracleBFile からコピー先の OracleLob にコピーします。

CopyTo(OracleLob)

この OracleBFile 全体の内容をコピー先の OracleLob の先頭にコピーします。

CopyTo(OracleLob, Int64)

この OracleBFile 全体の内容をコピー先の OracleLob の指定したオフセット位置にコピーします。

CopyTo(Stream)

現在のストリームからバイトを読み取り、別のストリームに書き込みます。 両方のストリーム位置は、コピーされたバイト数だけ進みます。

(継承元 Stream)
CopyTo(Stream, Int32)

指定されたバッファー サイズを使用して、現在のストリームからバイトを読み取り、別のストリームに書き込みます。 両方のストリーム位置は、コピーされたバイト数だけ進みます。

(継承元 Stream)
CopyToAsync(Stream)

現在のストリームからすべてのバイトを非同期に読み取り、別のストリームに書き込みます。 両方のストリーム位置は、コピーされたバイト数だけ進みます。

(継承元 Stream)
CopyToAsync(Stream, CancellationToken)

指定されたバッファー サイズを使用して、現在のストリームからバイトを非同期に読み取り、指定されたキャンセル トークンを使用して、別のストリームに書き込みます。 両方のストリーム位置は、コピーされたバイト数だけ進みます。

(継承元 Stream)
CopyToAsync(Stream, Int32)

指定されたバッファー サイズを使用して、現在のストリームからバイトを非同期に読み取り、別のストリームに書き込みます。 両方のストリーム位置は、コピーされたバイト数だけ進みます。

(継承元 Stream)
CopyToAsync(Stream, Int32, CancellationToken)

指定されたバッファー サイズを使用して、現在のストリームからバイトを非同期に読み取り、指定されたバッファー サイズとキャンセル トークンを使用して、別のストリームに書き込みます。 両方のストリーム位置は、コピーされたバイト数だけ進みます。

(継承元 Stream)
CreateObjRef(Type)

リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。

(継承元 MarshalByRefObject)
CreateWaitHandle()
古い.
古い.
古い.

WaitHandle オブジェクトを割り当てます。

(継承元 Stream)
Dispose()

このオブジェクトによって使用されているすべてのリソースを解放します。

Dispose()

Stream によって使用されているすべてのリソースを解放します。

(継承元 Stream)
Dispose(Boolean)

Stream によって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。

(継承元 Stream)
DisposeAsync()

Stream によって使用されているアンマネージ リソースを非同期に解放します。

(継承元 Stream)
EndRead(IAsyncResult)

保留中の非同期読み取りが完了するまで待機します。 (代わりに、ReadAsync(Byte[], Int32, Int32) の使用を検討してください。)

(継承元 Stream)
EndWrite(IAsyncResult)

非同期書き込み操作を終了します。 (代わりに、WriteAsync(Byte[], Int32, Int32) の使用を検討してください。)

(継承元 Stream)
Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
Flush()

現在サポートされていません。

FlushAsync()

ストリームに対応するすべてのバッファーを非同期にクリアし、バッファー内のデータを基になるデバイスに書き込みます。

(継承元 Stream)
FlushAsync(CancellationToken)

ストリームに対応するすべてのバッファーを非同期にクリアし、バッファー内のデータを基になるデバイスに書き込み、キャンセル要求を監視します。

(継承元 Stream)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetLifetimeService()
古い.

対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。

(継承元 MarshalByRefObject)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
InitializeLifetimeService()
古い.

このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。

(継承元 MarshalByRefObject)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
MemberwiseClone(Boolean)

現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。

(継承元 MarshalByRefObject)
ObjectInvariant()
古い.

Contract のサポートを提供します。

(継承元 Stream)
Read(Byte[], Int32, Int32)

現在の OracleBFile ストリームからバイト シーケンスを読み取り、読み取ったバイト数の分だけストリーム内の位置を進めます。

Read(Span<Byte>)

派生クラスによってオーバーライドされた場合は、現在のストリームからバイト シーケンスを読み取り、読み取ったバイト数の分だけストリームの位置を進めます。

(継承元 Stream)
ReadAsync(Byte[], Int32, Int32)

現在のストリームからバイト シーケンスを非同期に読み取り、読み取ったバイト数だけストリーム内の位置を進めます。

(継承元 Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

現在のストリームからバイト シーケンスを非同期に読み取り、読み取ったバイト数だけストリーム内の位置を進め、キャンセル要求を監視します。

(継承元 Stream)
ReadAsync(Memory<Byte>, CancellationToken)

現在のストリームからバイト シーケンスを非同期に読み取り、読み取ったバイト数だけストリーム内の位置を進め、キャンセル要求を監視します。

(継承元 Stream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

現在のストリームから少なくともバイト数を読み取り、ストリーム内の位置を読み取ったバイト数だけ進めます。

(継承元 Stream)
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken)

現在のストリームから少なくとも最小バイト数を非同期に読み取り、読み取られたバイト数だけストリーム内の位置を進め、キャンセル要求を監視します。

(継承元 Stream)
ReadByte()

ストリームから 1 バイトを読み取り、ストリーム内の位置を 1 バイト進めます。ストリームの末尾の場合は -1 を返します。

(継承元 Stream)
ReadExactly(Byte[], Int32, Int32)

現在のストリームからバイト数を読み取 count り、ストリーム内の位置を進めます。

(継承元 Stream)
ReadExactly(Span<Byte>)

現在のストリームからバイトを読み取り、 が入力されるまでストリーム内の位置を buffer 進めます。

(継承元 Stream)
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken)

現在のストリームからバイト数を非同期に読み取 count り、ストリーム内の位置を進め、キャンセル要求を監視します。

(継承元 Stream)
ReadExactlyAsync(Memory<Byte>, CancellationToken)

現在のストリームからバイトを非同期に読み取り、 が満たされるまでストリーム内の位置を buffer 進め、取り消し要求を監視します。

(継承元 Stream)
Seek(Int64, SeekOrigin)

現在の OracleBFile ストリームで位置を設定します。

SetFileName(String, String)

OracleBFile オブジェクトをオペレーティング システムの別のファイルにバインドします。

SetLength(Int64)

現在サポートされていません。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)
Write(Byte[], Int32, Int32)

現在サポートされていません。

Write(ReadOnlySpan<Byte>)

派生クラスによってオーバーライドされた場合は、現在のストリームにバイト シーケンスを書き込み、書き込んだバイト数の分だけストリームの現在位置を進めます。

(継承元 Stream)
WriteAsync(Byte[], Int32, Int32)

現在のストリームにバイト シーケンスを非同期に書き込み、書き込んだバイト数だけストリーム内の現在位置を進めます。

(継承元 Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

現在のストリームにバイト シーケンスを非同期に書き込み、書き込んだバイト数だけストリーム内の現在位置を進め、キャンセル要求を監視します。

(継承元 Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

現在のストリームにバイト シーケンスを非同期に書き込み、書き込んだバイト数だけストリーム内の現在位置を進め、キャンセル要求を監視します。

(継承元 Stream)
WriteByte(Byte)

ストリームの現在位置にバイトを書き込み、ストリームの位置を 1 バイトだけ進めます。

(継承元 Stream)

明示的なインターフェイスの実装

IDisposable.Dispose()

Stream によって使用されているすべてのリソースを解放します。

(継承元 Stream)

適用対象