次の方法で共有


OracleLob クラス

定義

Oracle サーバーに格納される、LOB (Large Object Binary) データ型を表します。 このクラスは継承できません。

public ref class OracleLob sealed : System::IO::Stream, ICloneable, System::Data::SqlTypes::INullable
public sealed class OracleLob : System.IO.Stream, ICloneable, System.Data.SqlTypes.INullable
type OracleLob = class
    inherit Stream
    interface ICloneable
    interface IDisposable
    interface INullable
Public NotInheritable Class OracleLob
Inherits Stream
Implements ICloneable, INullable
継承
実装

注釈

OracleLob 、データがオペレーティング システムの物理ファイルではなくサーバーに格納される点で とは異なります OracleBFile 。 また、常に読み取り専用である とは異なり OracleBFile、読み取り/書き込みオブジェクトを指定することもできます。

OracleLob 、これらの OracleType データ型のいずれかである場合があります。

OracleType データ型 [説明]
Blob 最大サイズが 4 ギガバイト (GB) のバイナリ データを含む Oracle BLOB データ型。 Array 型の Byte に割り当てられます。
Clob サーバー上の既定の文字セットに基づく、最大サイズが 4 GB の文字データを含む Oracle CLOB データ型。 String に割り当てられます。
NClob 最大サイズが 4 GB のサーバー上の国民文字セットに基づいて、文字データを格納する Oracle NCLOB データ型。 String に割り当てられます。

.NET アプリケーション開発者は、Oracle LOB 値を基本的な .NET データ型 (型や Stringなど) Array または特殊なOracleLobデータ型Byteに取得できます。 クラスは OracleLob 、Oracle データベース内の Oracle LOB との間でのデータの読み取りと書き込みをサポートします。

基本的な .NET データ型と区別するOracleLobデータ型のメイン特性を次に示します。

  • Oracle データベースから クラスに OracleLob Oracle LOB 値を取得した後、開いているトランザクションのデータを変更LOBすると、変更内容がデータベースに直接反映されます。 Oracle LOB の値を 型ByteArray取得するか、これらのString配列を更新した場合、変更はデータベースに反映されません。

  • クラスを OracleLob 使用して値の LOB チャンクにアクセスすると、そのチャンクのみが Oracle データベースからクライアントに渡されます。 メソッドを GetChars 使用して値の LOB チャンクにアクセスすると、値の内容全体が Oracle データベースからクライアントに渡されます。

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

次の形式を使用して、NULL である を OracleLob 構築できます。

OracleLob myLob = OracleLob.Null;  
Dim myLob As OracleLob = OracleLob.Null

この手法は主に、次の例に示すように、サーバーから返される が NULL かどうかを LOB テストするために使用されます。

if (myLob == OracleLob.Null)  
If (myLob = OracleLob.Null) Then

NULL LOB は、 で成功し、常に 0 バイトを返す Read 0 バイトLOBと同様に動作します。

null 値を LOB 含む列を選択すると、 が返されます Null

一時的 LOBな を取得する前に、トランザクションを開始する必要があります。 それ以外の場合、 は後で OracleDataReader データの取得に失敗する可能性があります。

DBMS_LOBを呼び出して、Oracle で一時的な LOB を開くこともできます。CREATETEMPORARY システム ストアド プロシージャと出力パラメーターの LOB バインド。 クライアント側では、一時 LOB はテーブルベース LOBのように動作します。 たとえば、一時的 LOBな を更新するには、トランザクションで囲む必要があります。

次の例では、一時的 LOBな を開く方法を示します。

var connection = new OracleConnection("server=MyServer; integrated security=yes;");  
connection.Open();  
OracleTransaction transaction = connection.BeginTransaction();  
OracleCommand command = connection.CreateCommand();  
command.Transaction = transaction;  
command.CommandText = "declare xx blob; begin dbms_lob.createtemporary(xx, false, 0); :tempblob := xx; end;";  
command.Parameters.Add(new OracleParameter("tempblob", OracleType.Blob)).Direction = ParameterDirection.Output;  
command.ExecuteNonQuery();  
var tempLob = (OracleLob)command.Parameters[0].Value;  
var tempbuff = new byte[10000];  
tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);  
tempLob.Write(tempbuff,0,tempbuff.Length);  
tempLob.EndBatch();  
command.Parameters.Clear();  
command.CommandText = "MyTable.MyProc";  
command.CommandType = CommandType.StoredProcedure;    
command.Parameters.Add(new OracleParameter("ImportDoc", OracleType.Blob)).Value = tempLob;  
command.ExecuteNonQuery();  
transaction.Commit();  
connection.Close(); 

注意

継承された WriteByte メソッドは、文字データと共に使用すると失敗し InvalidOperationException 、 がスローされます。 代わりに、Write メソッドを使用してください。

一時的 LOBな s は、接続が閉じられている場合にのみ閉じられますが、プールと負荷の下では、一時的 LOBな s は閉じられません。 これを解決するには、 を呼び出して一時的な LOBを破棄します tempLob.Dispose()

フィールド

Null

null の OracleLob オブジェクトを表します。

プロパティ

CanRead

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

CanSeek

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

CanTimeout

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

(継承元 Stream)
CanWrite

LOB が書き込みをサポートしているかどうかに関係なく、常に true を返します。

ChunkSize

読み取りまたは書き込み操作でサーバーから取得する、またはサーバーに送信する最小バイト数を示す値を取得します。

Connection

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

IsBatched

アプリケーションから BeginBatch() メソッドが呼び出されたかどうかを示す値を取得します。

IsNull

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

IsTemporary

OracleLob が一時 LOB であるかどうかを示す値を取得します。

Length

OracleLob のサイズを返す値を取得します。

LobType

LOB データ型を返す値を取得します。

Position

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

ReadTimeout

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

(継承元 Stream)
Value

基になる値と等価の共通言語ランタイムの値を取得します。

WriteTimeout

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

(継承元 Stream)

メソッド

Append(OracleLob)

指定した LOB のデータを現在の LOB に追加します。

BeginBatch()

複数の読み取り操作の実行中に、サーバー側のトリガーが発生しないようにします。

BeginBatch(OracleLobOpenMode)

指定したアクセス モードでの、複数の読み取り操作と書き込み操作の実行中に、サーバー側のトリガーが発生しないようにします。

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

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

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

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

(継承元 Stream)
Clone()

元の OracleLob オブジェクトと同じ Oracle の LOB を参照する、新しい OracleLob オブジェクトを作成します。

Close()

現在のストリームを終了し、ストリームに関連付けられたリソースを解放します。

Close()

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

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

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

CopyTo(OracleLob)

この OracleLob のデータをコピー先の OracleLob にコピーします。

CopyTo(OracleLob, Int64)

この OracleLob のデータを、コピーするデータ サイズを指定して、コピー先の 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)
EndBatch()

複数の書き込み操作の実行後に、サーバー側のトリガーの発生を再開します。

EndRead(IAsyncResult)

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

(継承元 Stream)
EndWrite(IAsyncResult)

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

(継承元 Stream)
Equals(Object)

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

(継承元 Object)
Erase()

この OracleLob からすべてのデータを消去します。

Erase(Int64, Int64)

この OracleLob から、指定したサイズのデータを消去します。

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)

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

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)

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

SetLength(Int64)

OracleLob ストリームの長さを、現在の長さより短い値に設定します。

ToString()

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

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

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

Write(ReadOnlySpan<Byte>)

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

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

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

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

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

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

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

(継承元 Stream)
WriteByte(Byte)

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

WriteByte(Byte)

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

(継承元 Stream)

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

IDisposable.Dispose()

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

(継承元 Stream)

拡張メソッド

CopyToAsync(Stream, PipeWriter, CancellationToken)

キャンセル トークンを使用して、Stream からバイトを非同期で読み取り、指定した PipeWriter に書き込みます。

適用対象