プライマリ・コンテンツに移動
Oracle® Data Provider for .NET開発者ガイド
ODAC 12c リリース4 (12.1.0.2) for Microsoft Windows
E72575-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

OracleBFileクラス

OracleBFileは、BFILEデータへの参照が含まれるオブジェクトです。このオブジェクトは、BFILEに対して操作を実行するためのメソッドを提供します。


注意:

OracleBFileは、Oracle8.x以降に対して実行されるアプリケーションでサポートされています。

クラスの継承

System.Object

  System.MarshalByRefObject

    System.IO.Stream

             Oracle.DataAccess.Types.OracleBFile

宣言

// C#
public sealed class OracleBFile : Stream, ICloneable, INullable

要件

プロバイダ ODP.NET管理対象外ドライバ ODP.NET管理対象ドライバ
アセンブリ Oracle.DataAccess.dll Oracle.ManagedDataAccess.dll
ネームスペース Oracle.DataAccess.Types Oracle.ManagedDataAccess.Types
.NET Framework 3.5, 4.0, 4.5, 4.6 4.0, 4.5, 4.6

スレッド安全性

パブリック静的メソッドはスレッドセーフですが、インスタンス・メソッドではスレッド安全性は保証されません。

備考

OracleBFileは、Oracle8.x以降に対して実行されるアプリケーションでサポートされています。

// Database Setup, if you have not done so yet.
/* Log on as DBA (SYS or SYSTEM) that has CREATE ANY DIRECTORY privilege.
 
CREATE OR REPLACE DIRECTORY MYDIR AS 'C:\TEMP';
 
*/
 
// C#
 
using System;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
 
class OracleBFileSample
{
static void Main()
{
    // Create MYDIR directory object as indicated previously and create a file
    // MyFile.txt with the text ABCDABC under C:\TEMP directory.
    // Note that the byte representation of the ABCDABC is 65666768656667
 
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    OracleBFile bFile = new OracleBFile(con, "MYDIR", "MyFile.txt");
 
    // Open the OracleBFile
    bFile.OpenFile();
 
    // Read 7 bytes into readBuffer, starting at buffer offset 0
    byte[] readBuffer = new byte[7];       
    int bytesRead = bFile.Read(readBuffer, 0, 7);
    
    // Prints "bytesRead  = 7"
    Console.WriteLine("bytesRead  = " + bytesRead);    
 
    // Prints "readBuffer = 65666768656667"
    Console.Write("readBuffer = ");
    for(int index = 0; index <  readBuffer.Length; index++)
    {
      Console.Write(readBuffer[index]);
    }
    Console.WriteLine();
 
    // Search for the 2nd occurrence of a byte pattern {66,67}
    // starting from byte offset 1 in the OracleBFile
    byte[] pattern = new byte[2] {66, 67};
    long posFound = bFile.Search(pattern, 1, 2);
    
    // Prints "posFound   = 6" 
    Console.WriteLine("posFound   = " + posFound);
    
    // Close the OracleBFile
    bFile.CloseFile();
 
    bFile.Close();
    bFile.Dispose();
 
    con.Close();
    con.Dispose();
}
}

OracleBFileメンバー

OracleBFileメンバーは次の表にリスト表示されています。

OracleBFileコンストラクタ

OracleBFileコンストラクタを、表13-1にリストします。

表13-1 OracleBFileコンストラクタ

コンストラクタ 説明

OracleBFileコンストラクタ


OracleBFileクラスのインスタンスを作成します(オーバーロード)


OracleBFile静的フィールド

OracleBFile静的フィールドを、表13-2にリストします。

表13-2 OracleBFile静的フィールド

フィールド 説明

MaxSize


静的フィールドはBFILEが保持できる最大バイト数、4,294,967,295(2^32 - 1)バイトを保持します。

Null


OracleBFileインスタンスの値に割り当てることができるNULL値を表します


OracleBFile静的メソッド

OracleBFile静的メソッドを、表13-3にリストします。

表13-3 OracleBFile静的メソッド

メソッド 説明

Equals

System.Objectからの継承(オーバーロード)


OracleBFileインスタンス・プロパティ

OracleBFileインスタンス・プロパティを、表13-4にリストします。

表13-4 OracleBFileインスタンス・プロパティ

プロパティ 説明

CanRead

LOBストリームが読取り可能かどうかを示します

CanSeek

順方向および逆方向検索操作が実行可能かどうかを示します

CanWrite


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

Connection


BFILEからの読取りに使用する接続を示します

DirectoryName


BFILEのディレクトリの別名を示します

FileExists


指定されたBFILEが存在するかどうかを示します

FileName


BFILEの名前を示します

IsEmpty


BFILEが空かどうかを示します

IsNull


現行インスタンスにNULL値があるかどうかを示します

IsOpen


BFILEがこのインスタンスによってオープンされているかどうかを示します

Length


BFILEデータのサイズをバイト数で示します

Position


LOBストリームの現行の読取り位置を示します

Value


データをBFILEの最初のバイトから開始するバイト配列として戻します


OracleBFileインスタンス・メソッド

OracleBFileインスタンス・メソッドを、表13-5にリストします。

表13-5 OracleBFileインスタンス・メソッド

メソッド 説明

BeginRead

System.IO.Streamからの継承

BeginWrite

サポート対象外

Clone


OracleBFileオブジェクトのコピーを作成します

Close


現行のストリームをクローズし、ストリームに関連するすべてのリソースを解除します

CloseFile


現行のBFILEインスタンスが参照するBFILEをクローズします

Compare


2つのOracleBFileが参照するデータを比較します

CreateObjRef

System.MarshalByRefObjectからの継承

CopyTo


指定どおりにデータをコピーします(オーバーロード)

Dispose


このオブジェクトによって割り当てられたリソースを解除します

EndRead

System.IO.Streamからの継承

EndWrite

サポート対象外

Equals

System.Objectからの継承(オーバーロード)

Flush


サポート対象外

FlushAsync


サポート対象外

GetHashCode

System.Objectからの継承

GetLifetimeService

System.MarshalByRefObjectからの継承

GetType

System.Objectからの継承

InitializeLifetimeService

System.MarshalByRefObjectからの継承

IsEqual


LOB参照を比較します

OpenFile


FileNameおよびDirectoryNameによって指定されたBFILEをオープンします

Read


OracleBFileインスタンスから指定バイト数を読み取り、bufferに移入します

ReadByte

System.IO.Streamからの継承

Search


OracleBFileの現行インスタンスのバイナリ・パターンを検索します

Seek


現行のLOBストリームに位置を設定します

SetLength


サポート対象外

ToString

System.Objectからの継承

Write


サポート対象外

WriteByte

サポート対象外


OracleBFileコンストラクタ

OracleBFileコンストラクタでは、OracleBFileクラスの新規インスタンスを作成します。

オーバーロード・リスト:

  • OracleBFile(OracleConnection)

    このコンストラクタでは、OracleBFileクラスのインスタンスをOracleConnectionオブジェクトとともに作成します。

  • OracleBFile(OracleConnection, string, string)

    このコンストラクタでは、OracleConnectionオブジェクト付きOracleBFileクラスのインスタンス、BFILEの位置およびBFILEの名前を作成します。

OracleBFile(OracleConnection)

このコンストラクタでは、OracleBFileクラスのインスタンスをOracleConnectionオブジェクトとともに作成します。

宣言

// C#
public OracleBFile(OracleConnection con);

パラメータ

  • con

    OracleConnectionオブジェクト。

例外

InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。

備考

接続は、アプリケーションによって明示的にオープンされる必要があります。OracleBFileでは接続を暗黙的にオープンしません。

OracleBFile(OracleConnection, string, string)

このコンストラクタでは、OracleConnectionオブジェクト付きOracleBFileクラスのインスタンス、BFILEの位置およびBFILEの名前を作成します。

宣言

// C#
public OracleBFile(OracleConnection con, string directoryName, string
   fileName);

パラメータ

  • con

    OracleConnectionオブジェクト。

  • directoryName

    CREATE DIRECTORY SQL文によって作成されたディレクトリの別名

  • fileName

    外部LOBの名前

例外

InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。

備考

OracleConnectionは、アプリケーションによって明示的にオープンされる必要があります。OracleBFileでは接続を暗黙的にオープンしません。

OracleBFileインスタンスを使用してBFILE列をSQL INSERT文の入力パラメータとして初期化するには、directoryNameおよびfileNameを正しく設定する必要があります。

OracleBFile静的フィールド

OracleBFile静的フィールドを、表13-6にリストします。

表13-6 OracleBFile静的フィールド

フィールド 説明

MaxSize


静的フィールドはBFILEが保持できる最大バイト数、4,294,967,295(2^32 - 1)バイトを保持します。

Null


OracleBFileインスタンスの値に割り当てることができるNULL値を表します


MaxSize

この静的フィールドはBFILEが保持できる最大バイト数、4,294,967,295(2^32 - 1)バイトを保持します。

宣言

// C#
public static readonly Int64 MaxSize = 4294967295;

備考

このフィールドは操作が許容最大長を超えているかどうかをチェックするコードに便利です。

Null

この静的フィールドは、OracleBFileインスタンスの値に割り当てることができるNULL値を表します。

宣言

// C#
public static readonly OracleBFile Null;

OracleBFile静的メソッド

OracleBFile静的メソッドを、表13-7にリストします。

表13-7 OracleBFile静的メソッド

メソッド 説明

Equals

System.Objectからの継承(オーバーロード)


OracleBFileインスタンス・プロパティ

OracleBFileインスタンス・プロパティを、表13-8にリストします。

表13-8 OracleBFileインスタンス・プロパティ

プロパティ 説明

CanRead

LOBストリームが読取り可能かどうかを示します

CanSeek

順方向および逆方向検索操作が実行可能かどうかを示します

CanWrite


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

Connection


BFILEからの読取りに使用する接続を示します

DirectoryName


BFILEのディレクトリの別名を示します

FileExists


指定されたBFILEが存在するかどうかを示します

FileName


BFILEの名前を示します

IsEmpty


BFILEが空かどうかを示します

IsNull


現行インスタンスにNULL値があるかどうかを示します

IsOpen


BFILEがこのインスタンスによってオープンされているかどうかを示します

Length


BFILEデータのサイズをバイト数で示します

Position


LOBストリームの現行の読取り位置を示します

Value


データをBFILEの最初のバイトから開始するバイト配列として戻します


CanRead

Streamをオーバーライドします

このインスタンス・プロパティではLOBストリームが読取り可能かどうかを示します。

宣言

// C#
public override bool CanRead{get;}

プロパティ値

LOBストリームが読取り可能の場合はtrueを戻し、それ以外の場合はfalseを戻します。

CanSeek

Streamをオーバーライドします

このインスタンス・プロパティでは、順方向および逆方向シーク操作が実行可能かどうかを示します。

宣言

// C#
public override bool CanSeek{get;}

プロパティ値

順方向および逆方向シーク操作が実行可能の場合はtrueを戻し、それ以外の場合はfalseを戻します。

CanWrite

Streamをオーバーライドします

このインスタンス・プロパティでは、LOBオブジェクトが書込みをサポートしているかどうかを示します。

宣言

// C#
public override bool CanWrite{get;}

プロパティ値

BFILEは読取り専用

備考

BFILEは読取り専用であるため、ブール値は常にfalseです。

Connection

このインスタンス・プロパティでは、BFILEからの読取りに使用する接続を示します。

宣言

// C#
public OracleConnection Connection {get;}

プロパティ値

OracleConnectionのオブジェクト

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

DirectoryName

このインスタンス・プロパティでは、BFILEのディレクトリの別名を示します。

宣言

// C#
public string DirectoryName {get;set;}

プロパティ値

string

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

InvalidOperationException - BFILEがオープンされているときに変更されたDirectoryNameの値。

備考

DirectoryNameの最大長は30バイトです。

FileExists

このインスタンス・プロパティでは、DirectoryNameおよびFileNameによって指定されたBFILEが存在するかどうかを示します。

宣言

// C#
public bool FileExists {get;}

プロパティ値

bool

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。

備考

接続、ファイル名およびディレクトリ名が指定されていない場合は、このプロパティはデフォルトでfalseに設定されます。

FileName

このインスタンス・プロパティでは、BFILEの名前を示します。

宣言

// C#
public string FileName {get;set}

プロパティ値

BFILE名を含むstring

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

InvalidOperationException - BFILEがオープンされているときに変更されたDirectoryNameの値。

備考

FileNameの最大長は255バイトです。

BFILEオブジェクトがオープンされているときにFileNameプロパティを変更すると例外が発生します。

IsEmpty

このインスタンス・プロパティでは、BFILEが空かどうかを示します。

宣言

// C#
public bool IsEmpty {get;}

プロパティ値

bool

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

IsNull

このプロパティは現行インスタンスにNULL値があるかどうかを示します。

宣言

// C#
public bool IsNull{get;}

プロパティ値

現行インスタンスにNULL値がある場合はtrue、それ以外の場合はfalseを戻します。

IsOpen

このインスタンス・プロパティでは、BFILEがこのインスタンスによってオープンされているかどうかを示します。

宣言

// C#
public bool IsOpen {get;}

プロパティ値

bool

Length

Streamをオーバーライドします

このインスタンス・プロパティでは、BFILEデータのサイズをバイト数で示します。

宣言

// C#
public override Int64 Length {get;}

プロパティ値

Int64

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。

Position

Streamをオーバーライドします

このインスタンスではLOBストリームの現行の読取り位置を示します。

宣言

// C#
public override Int64 Position{get; set;}

プロパティ値

読取り位置を示すInt64

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。

ArgumentOutOfRangeException - 値は0未満です。

Value

このインスタンス・プロパティでは、データをBFILEの最初のバイトを起点とするバイト配列として戻します。

宣言

// C#
public byte[] Value{get;}

プロパティ値

バイト配列

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。

備考

データ長はバイト配列の最大長によって制限されています。Positionプロパティの現行値は使用または変更されません。

OracleBFileインスタンス・メソッド

OracleBFileインスタンス・メソッドを、表13-9にリストします。

表13-9 OracleBFileインスタンス・メソッド

メソッド 説明

BeginRead

System.IO.Streamからの継承

BeginWrite

サポート対象外

Clone


OracleBFileオブジェクトのコピーを作成します

Close


現行のストリームをクローズし、ストリームに関連するすべてのリソースを解除します

CloseFile


現行のBFILEインスタンスが参照するBFILEをクローズします

Compare


2つのOracleBFileが参照するデータを比較します

CreateObjRef

System.MarshalByRefObjectからの継承

CopyTo


指定どおりにデータをコピーします(オーバーロード)

Dispose


このオブジェクトによって割り当てられたリソースを解除します

EndRead

System.IO.Streamからの継承

EndWrite

サポート対象外

Equals

System.Objectからの継承(オーバーロード)

Flush


サポート対象外

FlushAsync


サポート対象外

GetHashCode

System.Objectからの継承

GetLifetimeService

System.MarshalByRefObjectからの継承

GetType

System.Objectからの継承

InitializeLifetimeService

System.MarshalByRefObjectからの継承

IsEqual


LOB参照を比較します

OpenFile


FileNameおよびDirectoryNameによって指定されたBFILEをオープンします

Read


OracleBFileインスタンスから指定バイト数を読み取り、bufferに移入します

ReadByte

System.IO.Streamからの継承

Search


OracleBFileの現行インスタンスのバイナリ・パターンを検索します

Seek


現行のLOBストリームに位置を設定します

SetLength


サポート対象外

ToString

System.Objectからの継承

Write


サポート対象外

WriteByte

サポート対象外


Clone

このインスタンス・メソッドではOracleBFileオブジェクトのコピーを作成します。

宣言

// C#
public object Clone();

戻り値

OracleBFileオブジェクト

実装

ICloneable

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。

備考

複製されたオブジェクトのプロパティ値は、複製元のオブジェクトのプロパティ値と同じです。

// Database Setup, if you have not done so yet.
/* Log on as DBA (SYS or SYSTEM) that has CREATE ANY DIRECTORY privilege.
 
CREATE OR REPLACE DIRECTORY MYDIR AS 'C:\TEMP';
 
*/
 
// C#
 
using System;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
 
class CloneSample
{
  static void Main()
  {
    // Create MYDIR directory object as indicated above and create a file
    // MyFile.txt with the text ABCDABC under C:\TEMP directory.
    // Note that the byte representation of the ABCDABC is 65666768656667
 
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    OracleBFile bFile1 = new OracleBFile(con, "MYDIR", "MyFile.txt");
 
    // Open the OracleBFile
    bFile1.OpenFile();
 
    // Prints "bFile1.Position = 0"
    Console.WriteLine("bFile1.Position = " + bFile1.Position);
    
    // Set the Position before calling Clone()
    bFile1.Position = 1;
 
    // Clone the OracleBFile
    OracleBFile bFile2 = (OracleBFile) bFile1.Clone();
 
    // Open the OracleBFile
    bFile2.OpenFile();
 
    // Prints "bFile2.Position = 1"
    Console.WriteLine("bFile2.Position = " + bFile2.Position);
 
    // Close the OracleBFile
    bFile1.CloseFile();
 
    bFile1.Close();
    bFile1.Dispose();
 
    // Close the Cloned OracleBFile
    bFile2.CloseFile();
 
    bFile2.Close();
    bFile2.Dispose();
 
    con.Close();
    con.Dispose();
  }
}

Close

Streamをオーバーライドします

このインスタンス・メソッドは現行のストリームをクローズし、それに関連する任意のリソースを解放します。

宣言

// C#
public override void Close();

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。

CloseFile

このインスタンス・メソッドでは、現行のBFILEインスタンスが参照するBFILEをクローズします。

宣言

// C#
public void CloseFile();

備考

BFILEが存在しているがオープンされていない場合は、エラーは戻されません。

Compare

このインスタンス・メソッドでは、2つのOracleBFileが参照するデータを比較します。

宣言

// C#
public int Compare(Int64 src_offset, OracleBFile obj, Int64 dst_offset,
    Int64 amount);

パラメータ

  • src_offset

    現行インスタンスのオフセット

  • obj

    指定されたOracleBFileオブジェクト

  • dst_offset

    OracleBFileオブジェクトのオフセット

  • amount

    比較するバイト数

戻り値

次の数を戻します。

  • ゼロ未満: 現行のインスタンスのBFILEデータが指定されたBFILEデータの値より小さい場合。

  • ゼロ:どちらのBFILEにも同じデータが格納されている場合

  • ゼロ超過: 現行のインスタンスのBFILEデータが指定されたBFILEデータの値より大きい場合。

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。

ArgumentOutOfRangeException - src_offsetdst_offsetまたはamount0より小さい場合。

備考

指定されたオブジェクトと現行のインスタンスには、同じ接続を使用する必要があります。つまり、同じOracleConnectionオブジェクトを使用します。

BFILEは、操作前にOpenFileを使用してオープンされている必要があります。

// Database Setup, if you have not done so yet.
/* Log on as DBA (SYS or SYSTEM) that has CREATE ANY DIRECTORY privilege.
 
CREATE OR REPLACE DIRECTORY MYDIR AS 'C:\TEMP';
 
*/
 
// C#
 
using System;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
 
class CompareSample
{
  static void Main()
  {
    // Create MYDIR directory object as indicated previously and create a file
    // MyFile.txt with the text ABCDABC under C:\TEMP directory.
    // Note that the byte representation of the ABCDABC is 65666768656667
 
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    OracleBFile bFile1 = new OracleBFile(con, "MYDIR", "MyFile.txt");
    OracleBFile bFile2 = new OracleBFile(con, "MYDIR", "MyFile.txt");
 
    // Open the OracleBFiles
    bFile1.OpenFile();
    bFile2.OpenFile();
 
    // Compare 2 bytes from the 1st byte of bFile1 and
    // the 5th byte of bFile2 onwards
    int result = bFile1.Compare(1, bFile2, 5, 2);
 
    // Prints "result = 0" (Indicates the data is identical)
    Console.WriteLine("result = " + result);    
 
    // Close the OracleBFiles
    bFile1.CloseFile();
    bFile2.CloseFile();
 
    bFile1.Close();
    bFile1.Dispose();
 
    bFile2.Close();
    bFile2.Dispose();
 
    con.Close();
    con.Dispose();
  }
}

CopyTo

CopyToでは、現行のインスタンスから指定されたオブジェクトにデータをコピーします。

オーバーロード・リスト:

  • CopyTo(OracleBlob)

    このインスタンス・メソッドでは、現行のインスタンスから指定されたOracleBlobオブジェクトにデータをコピーします。

  • CopyTo(OracleBlob, Int64)

    このインスタンス・メソッドでは、データを現行のOracleBFileインスタンスから指定されたOracleBlobオブジェクトに、指定されたオフセット先とともにコピーします。

  • CopyTo(Int64, OracleBlob, Int64, Int64)

    このインスタンス・メソッドでは、データを現行のOracleBFileインスタンスから、指定されたソース・オフセット、オフセット先および文字数とともに指定されたOracleBlobオブジェクトにコピーします。

  • CopyTo(OracleClob)

    このインスタンス・メソッドでは、現行のOracleBFileインスタンスから指定されたOracleClobオブジェクトにデータをコピーします。

  • CopyTo(OracleClob, Int64)

    このインスタンス・メソッドでは、データを現行のOracleBFileインスタンスから指定されたOracleClobオブジェクトに指定されたオフセット先とともにコピーします。

  • CopyTo(Int64, OracleClob, Int64, Int64)

    このインスタンス・メソッドでは、データを現行のOracleBFileインスタンスから指定されたOracleClobオブジェクトに指定されたソース・オフセット、オフセット先および文字数とともにコピーします。

CopyTo(OracleBlob)

このインスタンス・メソッドでは、現行のインスタンスから指定されたOracleBlobオブジェクトにデータをコピーします。

宣言

// C#
public Int64 CopyTo(OracleBlob obj);

パラメータ

  • obj

    データのコピー先のOracleBlobオブジェクト

戻り値

戻り値はコピーされた数

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

InvalidOperationException - この例外は次のいずれかの条件が存在する場合に表示されます。

  • OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされた場合

  • LOBオブジェクト・パラメータにオブジェクト以外の接続がある場合

備考

指定されたオブジェクトと現行のインスタンスには、同じ接続を使用する必要があります。つまり、同じOracleConnectionオブジェクトを使用します。

CopyTo(OracleBlob, Int64)

このインスタンス・メソッドでは、データを現行のOracleBFileインスタンスから指定されたOracleBlobオブジェクトに、指定されたオフセット先とともにコピーします。

宣言

// C#
public Int64 CopyTo(OracleBlob obj, Int64 dst_offset);

パラメータ

  • obj

    データのコピー先のOracleBlobオブジェクト

  • dst_offset

    OracleBlobオブジェクトをコピーするオフセット(バイト)

戻り値

戻り値はコピーされた数

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

ArgumentOutOfRangeException - dst_offset0未満です。

InvalidOperationException - この例外は次のいずれかの条件が存在する場合に表示されます。

  • OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされた場合

  • LOBオブジェクト・パラメータにオブジェクト以外の接続がある場合

備考

dst_offsetOracleBlobデータの終点を超えている場合は、dst_offsetに到達するまでOracleBlobに空白が書き込まれます。

オフセットは0ベースです。この操作で文字変換は実行されません。

指定されたオブジェクトと現行のインスタンスには、同じ接続を使用する必要があります。つまり、同じOracleConnectionオブジェクトを使用します。

CopyTo(Int64, OracleBlob, Int64, Int64)

このインスタンス・メソッドでは、データを現行のOracleBFileインスタンスから、指定されたソース・オフセット、オフセット先および文字数とともに指定されたOracleBlobオブジェクトにコピーします。

宣言

// C#
public Int64 CopyTo(Int64 src_offset,OracleBlob obj,Int64 dst_offset,
   Int64 amount);

パラメータ

  • src_offset

    データの読取り元の現行インスタンス内のオフセット(バイト)

  • obj

    データのコピー先のOracleBlobオブジェクト

  • dst_offset

    OracleBlobオブジェクトのコピー先のオフセット(バイト)

  • amount

    コピーするデータ容量

戻り値

戻り値はコピーされた数

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

ArgumentOutOfRangeException - src_offsetdst_offsetまたはamount0より小さい場合。

InvalidOperationException - この例外は次のいずれかの条件が存在する場合に表示されます。

  • OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされた場合

  • LOBオブジェクト・パラメータにオブジェクト以外の接続がある場合

備考

dst_offsetOracleBlobデータの終点を超えている場合は、dst_offsetに到達するまでOracleBlobに空白が書き込まれます。

オフセットは0ベースです。この操作で文字変換は実行されません。

指定されたオブジェクトと現行のインスタンスには、同じ接続を使用する必要があります。つまり、同じOracleConnectionオブジェクトを使用します。

CopyTo(OracleClob)

このインスタンス・メソッドでは、現行のOracleBFileインスタンスから指定されたOracleClobオブジェクトにデータをコピーします。

宣言

// C#
public Int64 CopyTo(OracleClob obj);

パラメータ

  • obj

    データのコピー先のOracleClobオブジェクト

戻り値

戻り値はコピーされた数

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

InvalidOperationException - この例外は次のいずれかの条件が存在する場合に表示されます。

  • OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされた場合

  • LOBオブジェクト・パラメータにオブジェクト以外の接続がある場合

備考

指定されたオブジェクトと現行のインスタンスには、同じ接続を使用する必要があります。つまり、同じOracleConnectionオブジェクトを使用します。

CopyTo(OracleClob, Int64)

このインスタンス・メソッドでは、データを現行のOracleBFileインスタンスから指定されたOracleClobオブジェクトに指定されたオフセット先とともにコピーします。

宣言

// C#
public Int64 CopyTo(OracleClob obj, Int64 dst_offset);

パラメータ

  • obj

    データのコピー先のOracleClobオブジェクト

  • dst_offset

    OracleClobオブジェクトをコピーするオフセット(文字)

戻り値

コピーした数

例外

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

ArgumentOutOfRangeException - dst_offset0未満です。

InvalidOperationException - この例外は次のいずれかの条件が存在する場合に表示されます。

  • OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされた場合

  • LOBオブジェクト・パラメータにオブジェクト以外の接続がある場合

備考

dst_offsetOracleClobデータの終点を超えている場合は、dst_offsetに到達するまでOracleClobに空白が書き込まれます。

オフセットは0ベースです。この操作で文字変換は実行されません。

指定されたオブジェクトと現行のインスタンスには、同じ接続を使用する必要があります。つまり、同じOracleConnectionオブジェクトを使用します。

CopyTo(Int64, OracleClob, Int64, Int64)

このインスタンス・メソッドでは、データを現行のOracleBFileインスタンスから指定されたOracleClobオブジェクトに指定されたソース・オフセット、オフセット先および文字数とともにコピーします。

宣言

// C#
public Int64 CopyTo(Int64 src_offset,OracleClob obj,Int64 dst_offset,
   Int64 amount);

パラメータ

  • src_offset

    データの読取り元の現行インスタンス内のオフセット(文字)

  • obj

    データのコピー先のOracleClobオブジェクト

  • dst_offset

    OracleClobオブジェクトをコピーするオフセット(文字)

  • amount

    コピーするデータ容量

戻り値

戻り値はコピーされた数

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

ArgumentOutOfRangeException - src_offsetdst_offsetまたはamount0より小さい場合。

InvalidOperationException - この例外は次のいずれかの条件が存在する場合に表示されます。

  • OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされた場合

  • LOBオブジェクト・パラメータにオブジェクト以外の接続がある場合

備考

dst_offsetが現行のOracleClobデータの終点を超えている場合は、dst_offsetに到達するまでOracleClobに空白が書き込まれます。

オフセットは0ベースです。この操作で文字変換は実行されません。

指定されたオブジェクトと現行のインスタンスには、同じ接続を使用する必要があります。つまり、同じOracleConnectionオブジェクトを使用します。

Dispose

このインスタンス・メソッドでは、このオブジェクトによって割り当てられたリソースを解除します。

宣言

// C#
public void Dispose();

実装

IDisposable

備考

引き続き一部のプロパティにアクセスすることはできますが、その値は信頼できません。リソースが解除されているため、メソッドを呼び出すと例外となる可能性があります。オブジェクトは、処理後は再度使用できません。

FlushAsync

このメソッドは、サポートされていません。

IsEqual

このインスタンスではLOB参照を比較します。

宣言

// C#
public bool IsEqual(OracleBFile obj);

パラメータ

  • obj

    指定されたOracleBFileオブジェクト

戻り値

現行のOracleBFileおよび指定されたOracleBFileオブジェクトが同じ外部LOBを参照する場合は、trueを戻します。それ以外の場合はfalseを戻します。

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。

備考

2つの異なるOracleBFileインスタンスが同じ外部LOBを参照できるため、2つのOracleBFileオブジェクトが==またはEquals()に対してfalseを戻しても、このメソッドではtrueを戻すことができます。

指定されたオブジェクトと現行のインスタンスには、同じ接続を使用する必要があります。つまり、同じOracleConnectionオブジェクトを使用します。

OpenFile

このインスタンス・メソッドでは、FileNameおよびDirectoryNameによって指定されたBFILEをオープンします。

宣言

// C#
public void OpenFile();

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。

備考

Compare()CopyTo()Read()およびSearch()などの多くの操作の場合は、操作前にOpenFileを使用してBFILEをオープンしておく必要があります。

オープンしたBFILEでのOpenFileの呼出しはできません。

Read

Streamをオーバーライドします

このインスタンス・メソッドでは、OracleBFileインスタンスから指定バイト数を読み取り、bufferを移入します。

宣言

// C#
public override int Read(byte[] buffer, int offset, int count);

パラメータ

  • buffer

    移入されるバイト配列バッファ

  • offset

    移入されるバイト配列バッファのオフセット

  • count

    読取りバイト数

戻り値

この戻り値は、BFILE、つまり外部LOBから読み取られるバイト数を示します。

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。

ArgumentOutOfRangeException - offsetまたはcountパラメータが0未満、offsetbuffer.Length以上、またはoffsetcountの合計がbuffer.Lengthより大きい場合のいずれか。

備考

LOBデータの読取りは、Positionプロパティにより指定された位置から開始されます。

// Database Setup, if you have not done so yet.
/* Log on as DBA (SYS or SYSTEM) that has CREATE ANY DIRECTORY privilege.
 
CREATE OR REPLACE DIRECTORY MYDIR AS 'C:\TEMP';
 
*/
 
// C#
 
using System;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
 
class ReadSample
{
  static void Main()
  {
    // Create MYDIR directory object as indicated previously and create a file
    // MyFile.txt with the text ABCDABC under C:\TEMP directory.
    // Note that the byte representation of the ABCDABC is 65666768656667
 
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    OracleBFile bFile = new OracleBFile(con, "MYDIR", "MyFile.txt");
 
    // Open the OracleBFile
    bFile.OpenFile();
 
    // Read 7 bytes into readBuffer, starting at buffer offset 0
    byte[] readBuffer = new byte[7];       
    int bytesRead = bFile.Read(readBuffer, 0, 7);
    
    // Prints "bytesRead  = 7"
    Console.WriteLine("bytesRead  = " + bytesRead);    
 
    // Prints "readBuffer = 65666768656667"
    Console.Write("readBuffer = ");
    for(int index = 0; index <  readBuffer.Length; index++)
    {
      Console.Write(readBuffer[index]);
    }
    Console.WriteLine();
 
    // Close the OracleBFile
    bFile.CloseFile();
 
    bFile.Close();
    bFile.Dispose();
 
    con.Close();
    con.Dispose();
  }
}

Search

このインスタンス・メソッドでは、OracleBFileの現行のインスタンスのバイナリ・パターンを検索します。

宣言

// C#
public int Search(byte[] val, Int64 offset, Int64 nth);

パラメータ

  • val

    検索対象のバイナリ・パターン

  • offset

    OracleBFileの検索が開始される0ベース・オフセット(バイト)

  • nth

    オフセットが戻される特定の一致の状態(1ベース)

戻り値

一致のnth回目の出現に対して、一致パターン(バイト表示)の起点の絶対offsetを戻します。それ以外の場合は、0が戻されます。

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。

ArgumentOutOfRangeException - offset0未満の場合、nth0以下の場合、val.Length16383より大きい場合、nthOracleBFile.MaxSize以上の場合またはoffsetOracleBFile.MaxSize以上の場合のいずれか。

備考

検索パターンの制限は16383バイトです。

// Database Setup, if you have not done so yet.
/* Log on as DBA (SYS or SYSTEM) that has CREATE ANY DIRECTORY privilege.
 
CREATE OR REPLACE DIRECTORY MYDIR AS 'C:\TEMP';
 
*/
 
// C#
 
using System;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
 
class SearchSample
{
  static void Main()
  {
    // Create MYDIR directory object as indicated previously and create a file
    // MyFile.txt with the text ABCDABC under C:\TEMP directory.
    // Note that the byte representation of the ABCDABC is 65666768656667
 
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    OracleBFile bFile = new OracleBFile(con, "MYDIR", "MyFile.txt");
 
    // Open the OracleBFile
    bFile.OpenFile();
    
    // Search for the 2nd occurrence of a byte pattern {66,67}
    // starting from byte offset 1 in the OracleBFile
    byte[] pattern = new byte[2] {66, 67};
    long posFound = bFile.Search(pattern, 1, 2);
    
    // Prints "posFound = 6" 
    Console.WriteLine("posFound = " + posFound);
    
    // Close the OracleBFile
    bFile.CloseFile();
 
    bFile.Close();
    bFile.Dispose();
 
    con.Close();
    con.Dispose();
  }
}

Seek

Streamをオーバーライドします

このインスタンス・メソッドでは現行のLOBストリームに位置を設定します。

宣言

// C#
public override Int64 Seek(Int64 offset, SeekOrigin origin);

パラメータ

  • offset

    起点に相対的なバイト・オフセット

  • origin

    新規位置を取得する場合に使用する参照ポイントを示すタイプSystem.IO.SeekOriginの値

戻り値

位置を示すInt64が戻されます。

例外

ObjectDisposedException - オブジェクトはすでに処理されています。

InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。

備考

offsetが負の場合は、新規位置がoffsetによって指定されたバイト数だけ、originで指定した位置より前にあります。

offsetがゼロの場合は、originで指定した位置が新規位置となります。

offsetが正の場合は、新規位置はoffsetによって指定されたバイト数だけ、originで指定した位置より後にあります。

SeekOrigin.Beginはストリームの開始を指定します。

SeekOrigin.Currentはストリーム内の現行位置を指定します。

SeekOrigin.Endはストリームの終点を指定します。

// Database Setup, if you have not done so yet.
/* Log on as DBA (SYS or SYSTEM) that has CREATE ANY DIRECTORY privilege.
 
CREATE OR REPLACE DIRECTORY MYDIR AS 'C:\TEMP';
 
*/
 
// C#
 
using System;
using System.IO;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
 
class SeekSample
{
  static void Main()
  {
    // Create MYDIR directory object as indicated previously and create a file
    // MyFile.txt with the text ABCDABC under C:\TEMP directory.
    // Note that the byte representation of the ABCDABC is 65666768656667
 
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    OracleBFile bFile = new OracleBFile(con, "MYDIR", "MyFile.txt");
 
    // Open the OracleBFile
    bFile.OpenFile();
    
    // Set the Position to 2 with respect to SeekOrigin.Begin
    long newPosition = bFile.Seek(2, SeekOrigin.Begin);
 
    // Prints "newPosition     = 2"
    Console.WriteLine("newPosition     = " + newPosition);    
 
    // Prints "bFile.Position  = 2"
    Console.WriteLine("bFile.Position  = " + bFile.Position);    
 
    // Read 2 bytes into readBuffer, starting at buffer offset 1
    byte[] readBuffer = new byte[4];    
    int bytesRead = bFile.Read(readBuffer, 1, 2);
    
    // Prints "bytesRead       = 2"
    Console.WriteLine("bytesRead       = " + bytesRead);    
 
    // Prints "readBuffer      = 067680"
    Console.Write("readBuffer      = ");
    for(int index = 0; index <  readBuffer.Length; index++)
    {
      Console.Write(readBuffer[index]);
    }
    Console.WriteLine();
    
    // Close the OracleBFile
    bFile.CloseFile();
 
    bFile.Close();
    bFile.Dispose();
 
    con.Close();
    con.Dispose();
  }
}