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 クラスのページへのリンク