OracleBFile クラス
アセンブリ: System.Data.OracleClient (system.data.oracleclient.dll 内)

Public NotInheritable Class OracleBFile Inherits Stream Implements ICloneable, INullable, IDisposable

Oracle の BFILE データ型は、最大 4 ギガバイトのバイナリ データへの参照を格納する、Oracle の LOB データ型です。Oracle の BFILE は、データが、サーバーにではなくオペレーティング システムの物理ファイルに格納されるという点で、LOB データ型とは異なります。BFILE データ型が提供しているのは、データの読み取り専用アクセスです。そのため、Stream クラスから継承された書き込み用のメソッドはサポートしていません。
BFILE データ型が LOB データ型と異なる点として、他に次に挙げたものがあります。
BFILE データ型は、サイズが大きいためにデータベースへの格納には向かない LOB の参照に使用します。BFILE データ型を使用した場合、LOB データ型を使用した場合と比べて、クライアント、サーバー、および通信のオーバーヘッドが発生します。サイズの小さいデータだけを取得する必要がある場合は、BFILE にアクセスした方が効率的です。オブジェクト全体を取得する必要がある場合は、データベースに常駐する LOB にアクセスした方が効率的です。
NULL ではない各 OracleBFile オブジェクトには、基になる物理ファイルの位置を定義する、次の 2 つのエンティティが関連付けられます。
BFILE を作成した後、そのロケータを、ExecuteReader メソッドまたは ExecuteScalar メソッドを使用して、OracleBFile オブジェクトの形式で取得できます。
OracleBFile オブジェクトを取得するには、GetOracleBFile メソッドを呼び出します。
OracleBFile オブジェクトに関連付けられている物理ファイルは、そのファイルにアクセスするまで存在しなくてもかまいません。アプリケーションでは、存在しないファイルに OracleBFile をバインドしてから、指定した位置に物理ファイルを作成し、Read を呼び出すことができます。
Read メソッドまたは Seek メソッドを使用して、閉じている OracleBFile にアクセスしようとすると、自動的に OracleBFile ストリームが再度開かれます。
Oracle テーブル内で BFILE を作成し、これを OracleBFile オブジェクトの形式で取得する C# のコード例を次に示します。ここでは、OracleDataReader オブジェクト、および OracleBFile の Seek メソッドと 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; }
Oracle の BFILE の作成と使用に関する詳細については、Oracle のドキュメントの該当するトピックを参照してください。
![]() |
---|
BFILE データ型は読み取り専用であるため、System.IO.Stream クラスから継承される BeginWrite メソッド、EndWrite メソッド、および WriteByte メソッドは、サポートされません。 |



Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


OracleBFile フィールド
OracleBFile プロパティ

名前 | 説明 | |
---|---|---|
![]() | CanRead | オーバーライドされます。 BFILE ストリームを読み取ることができるかどうかを示す値を取得します。 |
![]() | CanSeek | オーバーライドされます。 前方シークおよび後方シーク操作を実行できるかどうかを示す値を取得します。 |
![]() | CanTimeout | 現在のストリームがタイムアウトできるかどうかを決定する値を取得します。 ( Stream から継承されます。) |
![]() | CanWrite | オーバーライドされます。 オブジェクトが書き込みをサポートしているかどうかを示す値を取得します。 |
![]() | Connection | この OracleBFile のインスタンスで使用される OracleConnection を取得します。 |
![]() | DirectoryName | OracleBFile オブジェクトが関連付けられている DIRECTORY オブジェクトの名前を取得します。 |
![]() | FileExists | BFILE データを格納している物理ファイルがオペレーティング システム上に存在するかどうかを示す値を取得します。 |
![]() | FileName | パス名なしの BFILE の名前を取得します。 |
![]() | IsNull | OracleBFile が Null ストリームであるかどうかを示す値を取得します。 |
![]() | Length | オーバーライドされます。 OracleBFile オブジェクトが関連付けられている物理ファイルの長さ (バイト数) を返す値を取得します。 |
![]() | Position | オーバーライドされます。 OracleBFile ストリーム内の現在の読み込み位置を取得します。 |
![]() | ReadTimeout | ストリームがタイムアウト前に読み取りを試行する期間を決定する値を取得または設定します。 ( Stream から継承されます。) |
![]() | Value | OracleBFile データを格納している Byte 型の Array を取得します。 |
![]() | WriteTimeout | ストリームがタイムアウト前に書き込みを試行する期間を決定する値を取得または設定します。 ( Stream から継承されます。) |

OracleBFile メソッド


名前 | 説明 | |
---|---|---|
![]() | CreateWaitHandle | WaitHandle オブジェクトを割り当てます。 ( Stream から継承されます。) |
![]() | Dispose | オーバーロードされます。 この Stream オブジェクトによって使用されているすべてのリソースを解放します。 ( Stream から継承されます。) |
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | オーバーロードされます。 ( MarshalByRefObject から継承されます。) |

OracleBFile メンバ
Oracle の BFILE データ型で動作する、マネージ オブジェクト OracleBFile を表します。このクラスは継承できません。
OracleBFile データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | CanRead | オーバーライドされます。 BFILE ストリームを読み取ることができるかどうかを示す値を取得します。 |
![]() | CanSeek | オーバーライドされます。 前方シークおよび後方シーク操作を実行できるかどうかを示す値を取得します。 |
![]() | CanTimeout | 現在のストリームがタイムアウトできるかどうかを決定する値を取得します。(Stream から継承されます。) |
![]() | CanWrite | オーバーライドされます。 オブジェクトが書き込みをサポートしているかどうかを示す値を取得します。 |
![]() | Connection | この OracleBFile のインスタンスで使用される OracleConnection を取得します。 |
![]() | DirectoryName | OracleBFile オブジェクトが関連付けられている DIRECTORY オブジェクトの名前を取得します。 |
![]() | FileExists | BFILE データを格納している物理ファイルがオペレーティング システム上に存在するかどうかを示す値を取得します。 |
![]() | FileName | パス名なしの BFILE の名前を取得します。 |
![]() | IsNull | OracleBFile が Null ストリームであるかどうかを示す値を取得します。 |
![]() | Length | オーバーライドされます。 OracleBFile オブジェクトが関連付けられている物理ファイルの長さ (バイト数) を返す値を取得します。 |
![]() | Position | オーバーライドされます。 OracleBFile ストリーム内の現在の読み込み位置を取得します。 |
![]() | ReadTimeout | ストリームがタイムアウト前に読み取りを試行する期間を決定する値を取得または設定します。 (Stream から継承されます。) |
![]() | Value | OracleBFile データを格納している Byte 型の Array を取得します。 |
![]() | WriteTimeout | ストリームがタイムアウト前に書き込みを試行する期間を決定する値を取得または設定します。 (Stream から継承されます。) |


名前 | 説明 | |
---|---|---|
![]() | CreateWaitHandle | WaitHandle オブジェクトを割り当てます。 (Stream から継承されます。) |
![]() | Dispose | オーバーロードされます。 この Stream オブジェクトによって使用されているすべてのリソースを解放します。 (Stream から継承されます。) |
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | オーバーロードされます。 ( MarshalByRefObject から継承されます。) |

- OracleBFileのページへのリンク