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
スレッド安全性
パブリック静的メソッドはスレッドセーフですが、インスタンス・メソッドではスレッド安全性は保証されません。
備考
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(); } }
要件
ネームスペース: Oracle.DataAccess.Types
アセンブリ: Oracle.DataAccess.dll
ODP.NETのバージョン: ODP.NET for .NET Framework 2.0またはODP.NET for .NET Framework 4
OracleBFile
メンバーは次の表にリスト表示されています。
OracleBFileコンストラクタ
OracleBFile
コンストラクタを、表13-1にリストします。
OracleBFile静的フィールド
OracleBFile
静的フィールドを、表13-2にリストします。
表13-2 OracleBFile静的フィールド
フィールド | 説明 |
---|---|
|
静的フィールドは |
|
|
OracleBFile静的メソッド
OracleBFile
静的メソッドを、表13-3にリストします。
OracleBFileインスタンス・プロパティ
OracleBFile
インスタンス・プロパティを、表13-4にリストします。
表13-4 OracleBFileインスタンス・プロパティ
プロパティ | 説明 |
---|---|
LOBストリームが読取り可能かどうかを示します |
|
順方向および逆方向検索操作が実行可能かどうかを示します |
|
|
LOBオブジェクトが書込みをサポートしているかどうかを示します |
|
|
|
|
|
指定された |
|
|
|
|
|
現行インスタンスにNULL値があるかどうかを示します |
|
|
|
|
|
LOBストリームの現行の読取り位置を示します |
|
データを |
OracleBFileインスタンス・メソッド
OracleBFile
インスタンス・メソッドを、表13-5にリストします。
表13-5 OracleBFileインスタンス・メソッド
メソッド | 説明 |
---|---|
|
|
|
サポート対象外 |
|
|
|
現行のストリームをクローズし、ストリームに関連するすべてのリソースを解除します |
|
現行の |
|
2つの |
|
|
|
指定どおりにデータをコピーします(オーバーロード) |
|
このオブジェクトによって割り当てられたリソースを解除します |
|
|
|
サポート対象外 |
|
|
|
サポート対象外 |
|
|
|
|
|
|
|
|
|
LOB参照を比較します |
|
|
|
|
|
|
|
|
|
現行のLOBストリームに位置を設定します |
|
サポート対象外 |
|
|
|
サポート対象外 |
|
サポート対象外 |
OracleBFile
コンストラクタでは、OracleBFile
クラスの新規インスタンスを作成します。
オーバーロード・リスト:
このコンストラクタでは、OracleBFile
クラスのインスタンスをOracleConnection
オブジェクトとともに作成します。
OracleBFile(OracleConnection, string, string)
このコンストラクタでは、OracleConnection
オブジェクト付きOracleBFile
クラスのインスタンス、BFILE
の位置およびBFILE
の名前を作成します。
このコンストラクタでは、OracleBFile
クラスのインスタンスをOracleConnection
オブジェクトとともに作成します。
宣言
// C#
public OracleBFile(OracleConnection con);
パラメータ
con
OracleConnection
オブジェクト
例外
InvalidOperationException
- OracleConnection
がオープンされていないか、またはオブジェクトの存続中にクローズされています。
備考
接続は、アプリケーションによって明示的にオープンされる必要があります。OracleBFile
では接続を暗黙的にオープンしません。
このコンストラクタでは、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
静的フィールドを、表13-6にリストします。
表13-6 OracleBFile静的フィールド
フィールド | 説明 |
---|---|
|
静的フィールドは |
|
|
この静的フィールドはBFILE
が保持できる最大バイト数、4,294,967,295(2^32 - 1)バイトを保持します。
宣言
// C# public static readonly Int64 MaxSize = 4294967295;
備考
このフィールドは操作が許容最大長を超えているかどうかをチェックするコードに便利です。
OracleBFile
インスタンス・プロパティを、表13-8にリストします。
表13-8 OracleBFileインスタンス・プロパティ
プロパティ | 説明 |
---|---|
LOBストリームが読取り可能かどうかを示します |
|
順方向および逆方向検索操作が実行可能かどうかを示します |
|
|
LOBオブジェクトが書込みをサポートしているかどうかを示します |
|
|
|
|
|
指定された |
|
|
|
|
|
現行インスタンスにNULL値があるかどうかを示します |
|
|
|
|
|
LOBストリームの現行の読取り位置を示します |
|
データを |
Stream
をオーバーライドします。
このインスタンス・プロパティではLOBストリームが読取り可能かどうかを示します。
宣言
// C# public override bool CanRead{get;}
プロパティ値
LOBストリームが読取り可能の場合はtrue
を戻し、それ以外の場合はfalse
を戻します。
Stream
をオーバーライドします。
このインスタンス・プロパティでは、順方向および逆方向シーク操作が実行可能かどうかを示します。
宣言
// C# public override bool CanSeek{get;}
プロパティ値
順方向および逆方向シーク操作が実行可能の場合はtrue
を戻し、それ以外の場合はfalse
を戻します。
Stream
をオーバーライドします。
このインスタンス・プロパティでは、LOBオブジェクトが書込みをサポートしているかどうかを示します。
宣言
// C# public override bool CanWrite{get;}
プロパティ値
BFILE
は読取り専用
備考
BFILE
は読取り専用であるため、ブール値は常にfalse
です。
このインスタンス・プロパティでは、BFILE
からの読取りに使用する接続を示します。
宣言
// C# public OracleConnection Connection {get;}
プロパティ値
OracleConnection
のオブジェクト
例外
ObjectDisposedException
- オブジェクトはすでに処理されています。
このインスタンス・プロパティでは、BFILE
のディレクトリの別名を示します。
宣言
// C# public string DirectoryName {get;set;}
プロパティ値
string
例外
ObjectDisposedException
- オブジェクトはすでに処理されています。
InvalidOperationException
- BFILE
がオープンされているときに変更されたDirectoryName
の値。
備考
DirectoryName
の最大長は30バイトです。
このインスタンス・プロパティでは、DirectoryName
およびFileName
によって指定されたBFILE
が存在するかどうかを示します。
宣言
// C# public bool FileExists {get;}
プロパティ値
bool
例外
ObjectDisposedException
- オブジェクトはすでに処理されています。
InvalidOperationException
- OracleConnection
がオープンされていないか、またはオブジェクトの存続中にクローズされています。
備考
接続、ファイル名およびディレクトリ名が指定されていない場合は、このプロパティはデフォルトでfalse
に設定されます。
このインスタンス・プロパティでは、BFILE
の名前を示します。
宣言
// C# public string FileName {get;set}
プロパティ値
BFILE
名を含むstring
例外
ObjectDisposedException
- オブジェクトはすでに処理されています。
InvalidOperationException
- BFILE
がオープンされているときに変更されたDirectoryName
の値。
備考
FileName
の最大長は255バイトです。
BFILE
オブジェクトがオープンされているときにFileName
プロパティを変更すると例外が発生します。
このインスタンス・プロパティでは、BFILE
が空かどうかを示します。
宣言
// C# public bool IsEmpty {get;}
プロパティ値
bool
例外
ObjectDisposedException
- オブジェクトはすでに処理されています。
このプロパティは現行インスタンスにNULL値があるかどうかを示します。
宣言
// C# public bool IsNull{get;}
プロパティ値
現行インスタンスにNULL値がある場合はtrue
、それ以外の場合はfalse
を戻します。
このインスタンス・プロパティでは、BFILE
がこのインスタンスによってオープンされているかどうかを示します。
宣言
// C# public bool IsOpen {get;}
プロパティ値
bool
Stream
をオーバーライドします。
このインスタンス・プロパティでは、BFILE
データのサイズをバイト数で示します。
宣言
// C# public override Int64 Length {get;}
プロパティ値
Int64
例外
ObjectDisposedException
- オブジェクトはすでに処理されています。
InvalidOperationException
- OracleConnection
がオープンされていないか、またはオブジェクトの存続中にクローズされています。
Stream
をオーバーライドします。
このインスタンスではLOBストリームの現行の読取り位置を示します。
宣言
// C# public override Int64 Position{get; set;}
プロパティ値
読取り位置を示すInt64
値
例外
ObjectDisposedException
- オブジェクトはすでに処理されています。
InvalidOperationException
- OracleConnection
がオープンされていないか、またはオブジェクトの存続中にクローズされています。
ArgumentOutOfRangeException
- 値は0未満です。
このインスタンス・プロパティでは、データをBFILE
の最初のバイトを起点とするバイト配列として戻します。
宣言
// C# public byte[] Value{get;}
プロパティ値
バイト配列
例外
ObjectDisposedException
- オブジェクトはすでに処理されています。
InvalidOperationException
- OracleConnection
がオープンされていないか、またはオブジェクトの存続中にクローズされています。
備考
データ長はバイト配列の最大長によって制限されています。Position
プロパティの現行値は使用または変更されません。
OracleBFile
インスタンス・メソッドを、表13-9にリストします。
表13-9 OracleBFileインスタンス・メソッド
メソッド | 説明 |
---|---|
|
|
|
サポート対象外 |
|
|
|
現行のストリームをクローズし、ストリームに関連するすべてのリソースを解除します |
|
現行の |
|
2つの |
|
|
|
指定どおりにデータをコピーします(オーバーロード) |
|
このオブジェクトによって割り当てられたリソースを解除します |
|
|
|
サポート対象外 |
|
|
|
サポート対象外 |
|
|
|
|
|
|
|
|
|
LOB参照を比較します |
|
|
|
|
|
|
|
|
|
現行のLOBストリームに位置を設定します |
|
サポート対象外 |
|
|
|
サポート対象外 |
|
サポート対象外 |
このインスタンス・メソッドでは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 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"); // 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(); // Prints "bFile2.Position = 1" Console.WriteLine("bFile2.Position = " + bFile2.Position); bFile1.Close(); bFile1.Dispose(); bFile2.Close(); bFile2.Dispose(); con.Close(); con.Dispose(); } }
Stream
をオーバーライドします。
このインスタンス・メソッドは現行のストリームをクローズし、それに関連する任意のリソースを解放します。
宣言
// C# public override void Close();
例外
ObjectDisposedException
- オブジェクトはすでに処理されています。
InvalidOperationException
- OracleConnection
がオープンされていないか、またはオブジェクトの存続中にクローズされています。
このインスタンス・メソッドでは、現行のBFILE
インスタンスが参照するBFILE
をクローズします。
宣言
// C# public void CloseFile();
備考
BFILE
が存在しているがオープンされていない場合は、エラーは戻されません。
このインスタンス・メソッドでは、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_offset
、dst_offset
またはamount
が0
より小さい場合。
備考
指定されたオブジェクトと現行のインスタンスには、同じ接続を使用する必要があります。つまり、同じ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
では、現行のインスタンスから指定されたオブジェクトにデータをコピーします。
オーバーロード・リスト:
このインスタンス・メソッドでは、現行のインスタンスから指定されたOracleBlob
オブジェクトにデータをコピーします。
このインスタンス・メソッドでは、データを現行のOracleBFile
インスタンスから指定されたOracleBlob
オブジェクトに、指定されたオフセット先とともにコピーします。
CopyTo(Int64, OracleBlob, Int64, Int64)
このインスタンス・メソッドでは、データを現行のOracleBFile
インスタンスから、指定されたソース・オフセット、オフセット先および文字数とともに指定されたOracleBlob
オブジェクトにコピーします。
このインスタンス・メソッドでは、現行のOracleBFile
インスタンスから指定されたOracleClob
オブジェクトにデータをコピーします。
このインスタンス・メソッドでは、データを現行のOracleBFile
インスタンスから指定されたOracleClob
オブジェクトに指定されたオフセット先とともにコピーします。
CopyTo(Int64, OracleClob, Int64, Int64)
このインスタンス・メソッドでは、データを現行のOracleBFile
インスタンスから指定されたOracleClob
オブジェクトに指定されたソース・オフセット、オフセット先および文字数とともにコピーします。
このインスタンス・メソッドでは、現行のインスタンスから指定されたOracleBlob
オブジェクトにデータをコピーします。
宣言
// C#
public Int64 CopyTo(OracleBlob obj);
パラメータ
obj
データのコピー先のOracleBlob
オブジェクト
戻り値
戻り値はコピーされた数
例外
ObjectDisposedException
- オブジェクトはすでに処理されています。
InvalidOperationException
- この例外は次のいずれかの条件が存在する場合に表示されます。
OracleConnection
がオープンされていないか、またはオブジェクトの存続中にクローズされた場合
LOBオブジェクト・パラメータにオブジェクト以外の接続がある場合
備考
指定されたオブジェクトと現行のインスタンスには、同じ接続を使用する必要があります。つまり、同じOracleConnection
オブジェクトを使用します。
このインスタンス・メソッドでは、データを現行のOracleBFile
インスタンスから指定されたOracleBlob
オブジェクトに、指定されたオフセット先とともにコピーします。
宣言
// C# public Int64 CopyTo(OracleBlob obj, Int64 dst_offset);
パラメータ
obj
データのコピー先のOracleBlob
オブジェクト
dst_offset
OracleBlob
オブジェクトをコピーするオフセット(バイト)
戻り値
戻り値はコピーされた数
例外
ObjectDisposedException
- オブジェクトはすでに処理されています。
ArgumentOutOfRangeException
- dst_offset
は0
未満です。
InvalidOperationException
- この例外は次のいずれかの条件が存在する場合に表示されます。
OracleConnection
がオープンされていないか、またはオブジェクトの存続中にクローズされた場合
LOBオブジェクト・パラメータにオブジェクト以外の接続がある場合
備考
dst_offset
がOracleBlob
データの終点を超えている場合は、dst_offset
に到達するまでOracleBlob
に空白が書き込まれます。
オフセットは0
ベースです。この操作で文字変換は実行されません。
指定されたオブジェクトと現行のインスタンスには、同じ接続を使用する必要があります。つまり、同じOracleConnection
オブジェクトを使用します。
このインスタンス・メソッドでは、データを現行の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_offset
、dst_offset
またはamount
が0
より小さい場合。
InvalidOperationException
- この例外は次のいずれかの条件が存在する場合に表示されます。
OracleConnection
がオープンされていないか、またはオブジェクトの存続中にクローズされた場合
LOBオブジェクト・パラメータにオブジェクト以外の接続がある場合
備考
dst_offset
がOracleBlob
データの終点を超えている場合は、dst_offset
に到達するまでOracleBlob
に空白が書き込まれます。
オフセットは0
ベースです。この操作で文字変換は実行されません。
指定されたオブジェクトと現行のインスタンスには、同じ接続を使用する必要があります。つまり、同じOracleConnection
オブジェクトを使用します。
このインスタンス・メソッドでは、現行のOracleBFile
インスタンスから指定されたOracleClob
オブジェクトにデータをコピーします。
宣言
// C#
public Int64 CopyTo(OracleClob obj);
パラメータ
obj
データのコピー先のOracleClob
オブジェクト
戻り値
戻り値はコピーされた数
例外
ObjectDisposedException
- オブジェクトはすでに処理されています。
InvalidOperationException
- この例外は次のいずれかの条件が存在する場合に表示されます。
OracleConnection
がオープンされていないか、またはオブジェクトの存続中にクローズされた場合
LOBオブジェクト・パラメータにオブジェクト以外の接続がある場合
備考
指定されたオブジェクトと現行のインスタンスには、同じ接続を使用する必要があります。つまり、同じOracleConnection
オブジェクトを使用します。
このインスタンス・メソッドでは、データを現行のOracleBFile
インスタンスから指定されたOracleClob
オブジェクトに指定されたオフセット先とともにコピーします。
宣言
// C# public Int64 CopyTo(OracleClob obj, Int64 dst_offset);
パラメータ
obj
データのコピー先のOracleClob
オブジェクト
dst_offset
OracleClob
オブジェクトをコピーするオフセット(文字)
戻り値
コピーした数
例外
例外
ObjectDisposedException
- オブジェクトはすでに処理されています。
ArgumentOutOfRangeException
- dst_offset
は0
未満です。
InvalidOperationException
- この例外は次のいずれかの条件が存在する場合に表示されます。
OracleConnection
がオープンされていないか、またはオブジェクトの存続中にクローズされた場合
LOBオブジェクト・パラメータにオブジェクト以外の接続がある場合
備考
dst_offset
がOracleClob
データの終点を超えている場合は、dst_offset
に到達するまでOracleClob
に空白が書き込まれます。
オフセットは0
ベースです。この操作で文字変換は実行されません。
指定されたオブジェクトと現行のインスタンスには、同じ接続を使用する必要があります。つまり、同じOracleConnection
オブジェクトを使用します。
このインスタンス・メソッドでは、データを現行の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_offset
、dst_offset
またはamount
が0
より小さい場合。
InvalidOperationException
- この例外は次のいずれかの条件が存在する場合に表示されます。
OracleConnection
がオープンされていないか、またはオブジェクトの存続中にクローズされた場合
LOBオブジェクト・パラメータにオブジェクト以外の接続がある場合
備考
dst_offset
が現行のOracleClob
データの終点を超えている場合は、dst_offset
に到達するまでOracleClob
に空白が書き込まれます。
オフセットは0
ベースです。この操作で文字変換は実行されません。
指定されたオブジェクトと現行のインスタンスには、同じ接続を使用する必要があります。つまり、同じOracleConnection
オブジェクトを使用します。
このインスタンス・メソッドでは、このオブジェクトによって割り当てられたリソースを解除します。
宣言
// C# public void Dispose();
実装
IDisposable
備考
引き続き一部のプロパティにアクセスすることはできますが、その値は信頼できません。リソースが解除されているため、メソッドを呼び出すと例外となる可能性があります。オブジェクトは、処理後は再度使用できません。
このインスタンスでは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
オブジェクトを使用します。
このインスタンス・メソッドでは、FileName
およびDirectoryName
によって指定されたBFILE
をオープンします。
宣言
// C# public void OpenFile();
例外
ObjectDisposedException
- オブジェクトはすでに処理されています。
InvalidOperationException
- OracleConnection
がオープンされていないか、またはオブジェクトの存続中にクローズされています。
備考
Compare()
、CopyTo()
、Read()
およびSearch()
などの多くの操作の場合は、操作前にOpenFile
を使用してBFILE
をオープンしておく必要があります。
オープンしたBFILE
でのOpenFile
の呼出しはできません。
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
未満、offset
がbuffer
.Length
以上、またはoffset
とcount
の合計が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(); } }
このインスタンス・メソッドでは、OracleBFile
の現行のインスタンスのバイナリ・パターンを検索します。
宣言
// C# public int Search(byte[ ] val, Int64 offset, Int64 nth);
パラメータ
val
検索対象のバイナリ・パターン
offset
OracleBFile
の検索が開始される0
ベース・オフセット(バイト)
nth
オフセットが戻される特定の一致の状態(1
ベース)
戻り値
一致のnth
回目の出現に対して、一致パターン(バイト表示)の起点の絶対offset
を戻します。それ以外の場合は、0
が戻されます。
例外
ObjectDisposedException
- オブジェクトはすでに処理されています。
InvalidOperationException
- OracleConnection
がオープンされていないか、またはオブジェクトの存続中にクローズされています。
ArgumentOutOfRangeException
- offset
が0
未満の場合、nth
が0
以下の場合、val
.Length
が16383
より大きい場合、nth
がOracleBFile.MaxSize
以上の場合またはoffset
がOracleBFile.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(); } }
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(); } }