OracleLob クラス

定義

Oracle サーバーに格納される、LOB (Large Object Binary) データ型を表します。Represents a large object binary (LOB) data type stored on an Oracle server. このクラスは継承できません。This class cannot be inherited.

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
継承
実装

注釈

は、データがOracleBFileオペレーティングシステムの物理ファイルではなくサーバーに格納されるという点で、とは異なります。OracleLobAn OracleLob differs from an OracleBFile in that the data is stored on the server instead of in a physical file in the operating system. 常に読み取り専用であるとは異なりOracleBFile、読み取り/書き込みオブジェクトにすることもできます。It can also be a read-write object, unlike an OracleBFile, which is always read-only.

OracleLobは、次OracleTypeのいずれかのデータ型を指定できます。An OracleLob may be one of these OracleType data types.

OracleType データ型OracleType data type 説明Description
Blob 最大サイズBLOBが 4 gb のバイナリデータを含む Oracle データ型。An Oracle BLOB data type that contains binary data with a maximum size of 4 gigabytes (GB). Array 型の Byte に割り当てられます。This maps to an Array of type Byte.
Clob サーバー上CLOBの既定の文字セットに基づいた文字データを格納する Oracle データ型。最大サイズは 4 GB です。An Oracle CLOB data type that contains character data, based on the default character set on the server, with a maximum size of 4 GB. String に割り当てられます。This maps to String.
NClob 最大サイズNCLOBが 4 GB のサーバー上の各国語文字セットに基づいて、文字データを格納する Oracle データ型。An Oracle NCLOB data type that contains character data, based on the national character set on the server with a maximum size of 4 GB. String に割り当てられます。This maps to String.

.Net アプリケーション開発者は、 LOB Oracle の値を、型やStringByteなどArrayの基本的な .net データ型、またはOracleLob特殊なデータ型に取得できます。A .NET application developer can retrieve the Oracle LOB values into basic .NET data types, such as Array of type Byte and String, or the specialized OracleLob data type. クラスOracleLobでは、oracle データベースの oracle LOBに対するデータの読み取りと書き込みをサポートしています。The OracleLob class supports reading data from and writing to the Oracle LOB in the Oracle database.

基本的な .net データ型と区別するOracleLobデータ型の主な特性は次のとおりです。The following are the main characteristics of an OracleLob data type that distinguish it from basic .NET data types:

  • Oracle データベースからOracleLobクラスにLOB oracle の値を取得した後は、開いているLOBトランザクションのデータを変更することができ、変更内容はデータベースに直接反映されます。After you retrieve the Oracle LOB value from the Oracle database into the OracleLob class, you can change the LOB data in an open transaction and your changes are directly reflected to the database. Oracle LOBの値Arrayを型またはStringByteのに取得し、これらの配列を更新した場合、変更内容はデータベースに反映されません。If you retrieve the Oracle LOB value into an Array of type Byte or String and update these arrays, your changes are not reflected to the database.

  • OracleLobクラスを使用してLOB値のチャンクにアクセスする場合、そのチャンクのみが Oracle データベースからクライアントに渡されます。When you use the OracleLob class to access a chunk of a LOB value, only that chunk is passed from the Oracle database to the client. メソッドを使用しGetCharsLOB値のチャンクにアクセスする場合、値の内容全体が Oracle データベースからクライアントに渡されます。When you use the GetChars method to access a chunk of a LOB value, the entire contents of the value are passed from the Oracle database to the client.

OracleLobオブジェクトを取得するには、 GetOracleLobメソッドを呼び出します。To obtain an OracleLob object, call the GetOracleLob method.

次の形式をOracleLob使用して、NULL であるを構築できます。You can construct an OracleLob that is NULL using this format:

OracleLob myLob = OracleLob.Null;  

この手法は、主に、サーバーからLOB返されたが NULL であるかどうかをテストするために使用されます。この例を次に示します。This technique is used primarily to test whether a LOB returned from the server is NULL, as this example illustrates:

If(myLob == OracleLob.Null)  

NULL LOBは、でRead成功し、常にLOB 0 バイトを返すの0バイトと同様に動作します。A NULL LOB behaves similarly to a zero-byte LOB in that Read succeeds and always returns zero bytes.

Null 値を含むNull列を選択すると、が返されます。LOBSelecting a LOB column that contains a null value returns Null.

一時LOBを取得する前に、トランザクションを開始する必要があります。You must begin a transaction before obtaining a temporary LOB. それ以外のOracleDataReader場合、は後でデータの取得に失敗する可能性があります。Otherwise, the OracleDataReader may fail to obtain data later.

DBMS_LOB を呼び出すことにLOBより、Oracle で一時的なを開くこともできます。Createtemporary システムストアドプロシージャを指定しLOB 、出力パラメーターをバインドします。You can also open a temporary LOB in Oracle by calling the DBMS_LOB.CREATETEMPORARY system stored procedure and binding a LOB output parameter. クライアント側では、一時LOBはテーブルベースLOBのように動作します。On the client side, a temporary LOB behaves like a table-based LOB. たとえば、一時的LOBなを更新するには、トランザクションで囲む必要があります。For example, to update the temporary LOB, it must be enclosed in a transaction.

次C#の例では、一時LOBを開く方法を示します。The following C# example demonstrates how to open a temporary LOB.

OracleConnection 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();  
OracleLob tempLob = (OracleLob)command.Parameters[0].Value;  
byte[] 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使用すると失敗し、がスローされます。The inherited WriteByte method fails if used with character data, and an InvalidOperationException is thrown. 代わりに、Write メソッドを使用してください。Use the Write method instead.

一時的LOBなは、接続が閉じられたときにのみ閉じられます。ただしLOB、プールと負荷がかかっている場合、一時的なは閉じられません。Temporary LOBs are only closed when the connection is closed, but with pooling and under load, temporary LOBs do not close. これは、を呼び出しLOB tempLob.Dispose()て一時を破棄することによって解決できます。This can be resolved by disposing the temporary LOB, by invoking tempLob.Dispose().

フィールド

Null

null の OracleLob オブジェクトを表します。Represents a null OracleLob object.

プロパティ

CanRead

LOB ストリームを読み取ることができるかどうかを示す値を取得します。Gets a value indicating whether the LOB stream can be read.

CanSeek

前方シークおよび後方シーク操作を実行できるかどうかを示す値を取得します。Gets a value indicating whether forward and backward seek operations can be performed.

CanTimeout

現在のストリームがタイムアウトできるかどうかを決定する値を取得します。Gets a value that determines whether the current stream can time out.

(継承元 Stream)
CanWrite

LOB が書き込みをサポートしているかどうかに関係なく、常に true を返します。Always returns true, regardless of whether the LOB supports writing or not.

ChunkSize

読み取りまたは書き込み操作でサーバーから取得する、またはサーバーに送信する最小バイト数を示す値を取得します。Gets a value indicating the minimum number of bytes to retrieve from or send to the server during a read/write operation.

Connection

この OracleConnection のインスタンスで使用される OracleLob を取得します。Gets the OracleConnection used by this instance of the OracleLob.

IsBatched

アプリケーションから BeginBatch() メソッドが呼び出されたかどうかを示す値を取得します。Gets a value indicating whether an application called the BeginBatch() method.

IsNull

OracleLobNull ストリームであるかどうかを示す値を取得します。Gets a value that indicates whether the OracleLob is a Null stream.

IsTemporary

OracleLob が一時 LOB であるかどうかを示す値を取得します。Gets a value indicating whether the OracleLob is a temporary LOB.

Length

OracleLob のサイズを返す値を取得します。Gets a value that returns the size of the OracleLob.

LobType

LOB データ型を返す値を取得します。Gets a value that returns the LOB data type.

Position

OracleLob ストリーム内の現在の読み込み位置を取得します。Gets the current read position in the OracleLob stream.

ReadTimeout

ストリームがタイムアウト前に読み取りを試行する期間を決定する値 (ミリ秒単位) を取得または設定します。Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out.

(継承元 Stream)
Value

基になる値と等価の共通言語ランタイムの値を取得します。Gets the common language runtime stream value equivalent of the underlying value.

WriteTimeout

ストリームがタイムアウト前に書き込みを試行する期間を決定する値 (ミリ秒単位) を取得または設定します。Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out.

(継承元 Stream)

メソッド

Append(OracleLob)

指定した LOB のデータを現在の LOB に追加します。Appends data from the specified LOB to the current LOB.

BeginBatch()

複数の読み取り操作の実行中に、サーバー側のトリガーが発生しないようにします。Prevents server-side triggers from firing while performing multiple read operations.

BeginBatch(OracleLobOpenMode)

指定したアクセス モードでの、複数の読み取り操作と書き込み操作の実行中に、サーバー側のトリガーが発生しないようにします。Prevents server-side triggers from firing while performing multiple read and write operations in the specified access mode.

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

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

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

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

(継承元 Stream)
Clone()

元の OracleLob オブジェクトと同じ Oracle の LOB を参照する、新しい OracleLob オブジェクトを作成します。Creates a new OracleLob object that references the same Oracle LOB as the original OracleLob object.

Close()

現在のストリームを終了し、ストリームに関連付けられたリソースを解放します。Closes the current stream and releases resources that are associated with the stream.

CopyTo(Int64, OracleLob, Int64, Int64)

データ サイズとコピー先のオフセットを指定して、この OracleLob からコピー先の OracleLob にコピーします。Copies from this OracleLob to a destination OracleLob with the specified amount of data, and the source offset.

CopyTo(OracleLob)

この OracleLob のデータをコピー先の OracleLob にコピーします。Copies from this OracleLob to a destination OracleLob.

CopyTo(OracleLob, Int64)

この OracleLob のデータを、コピーするデータ サイズを指定して、コピー先の OracleLob にコピーします。Copies from this OracleLob to a destination OracleLob with the specified amount of data.

CopyTo(Stream)

現在のストリームからバイトを読み取り、別のストリームに書き込みます。Reads the bytes from the current stream and writes them to another stream.

(継承元 Stream)
CopyTo(Stream, Int32)

指定されたバッファー サイズを使用して、現在のストリームからバイトを読み取り、別のストリームに書き込みます。Reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(継承元 Stream)
CopyToAsync(Stream)

現在のストリームからすべてのバイトを非同期に読み取り、別のストリームに書き込みます。Asynchronously reads the bytes from the current stream and writes them to another stream.

(継承元 Stream)
CopyToAsync(Stream, CancellationToken)

指定されたバッファー サイズを使用して、現在のストリームからバイトを非同期に読み取り、指定されたキャンセル トークンを使用して、別のストリームに書き込みます。Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token.

(継承元 Stream)
CopyToAsync(Stream, Int32)

指定されたバッファー サイズを使用して、現在のストリームからバイトを非同期に読み取り、別のストリームに書き込みます。Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(継承元 Stream)
CopyToAsync(Stream, Int32, CancellationToken)

指定されたバッファー サイズを使用して、現在のストリームからバイトを非同期に読み取り、指定されたバッファー サイズとキャンセル トークンを使用して、別のストリームに書き込みます。Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size and cancellation token.

(継承元 Stream)
CreateObjRef(Type)

リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(継承元 MarshalByRefObject)
CreateWaitHandle()

WaitHandle オブジェクトを割り当てます。Allocates a WaitHandle object.

(継承元 Stream)
Dispose()

このオブジェクトによって使用されているリソースを解放します。Releases the resources that are used by this object.

Dispose(Boolean)

Stream によって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。Releases the unmanaged resources used by the Stream and optionally releases the managed resources.

(継承元 Stream)
DisposeAsync()

Stream によって使用されているアンマネージ リソースを非同期に解放します。Asynchronously releases the unmanaged resources used by the Stream.

(継承元 Stream)
EndBatch()

複数の書き込み操作の実行後に、サーバー側のトリガーの発生を再開します。Allows server-side triggers to resume firing after performing multiple write operations.

EndRead(IAsyncResult)

保留中の非同期読み取りが完了するまで待機します。Waits for the pending asynchronous read to complete. (代わりに、ReadAsync(Byte[], Int32, Int32) の使用を検討してください。)(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(継承元 Stream)
EndWrite(IAsyncResult)

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

(継承元 Stream)
Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判定します。Determines whether the specified object is equal to the current object.

(継承元 Object)
Erase()

この OracleLob からすべてのデータを消去します。Erases all data from this OracleLob.

Erase(Int64, Int64)

この OracleLob から、指定したサイズのデータを消去します。Erases the specified amount of data from this OracleLob.

Flush()

現在サポートされていません。Not currently supported.

FlushAsync()

ストリームに対応するすべてのバッファーを非同期にクリアし、バッファー内のデータを基になるデバイスに書き込みます。Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.

(継承元 Stream)
FlushAsync(CancellationToken)

ストリームに対応するすべてのバッファーを非同期にクリアし、バッファー内のデータを基になるデバイスに書き込み、キャンセル要求を監視します。Asynchronously clears all buffers for this stream, causes any buffered data to be written to the underlying device, and monitors cancellation requests.

(継承元 Stream)
GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(継承元 Object)
GetLifetimeService()

対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(継承元 MarshalByRefObject)
GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
InitializeLifetimeService()

このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。Obtains a lifetime service object to control the lifetime policy for this instance.

(継承元 MarshalByRefObject)
MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
MemberwiseClone(Boolean)

現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。Creates a shallow copy of the current MarshalByRefObject object.

(継承元 MarshalByRefObject)
ObjectInvariant()

Contract のサポートを提供します。Provides support for a Contract.

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

現在の OracleLob ストリームからバイト シーケンスを読み取り、読み取ったバイト数の分だけストリーム内の位置を進めます。Reads a sequence of bytes from the current OracleLob stream and advances the position within the stream by the number of bytes read.

Read(Span<Byte>)

派生クラスによってオーバーライドされた場合は、現在のストリームからバイト シーケンスを読み取り、読み取ったバイト数の分だけストリームの位置を進めます。When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

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

現在のストリームからバイト シーケンスを非同期に読み取り、読み取ったバイト数だけストリーム内の位置を進めます。Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

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

現在のストリームからバイト シーケンスを非同期に読み取り、読み取ったバイト数だけストリーム内の位置を進め、キャンセル要求を監視します。Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

(継承元 Stream)
ReadAsync(Memory<Byte>, CancellationToken)

現在のストリームからバイト シーケンスを非同期に読み取り、読み取ったバイト数だけストリーム内の位置を進め、キャンセル要求を監視します。Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

(継承元 Stream)
ReadByte()

ストリームから 1 バイトを読み取り、ストリーム内の位置を 1 バイト進めます。ストリームの末尾の場合は -1 を返します。Reads a byte from the stream and advances the position within the stream by one byte, or returns -1 if at the end of the stream.

(継承元 Stream)
Seek(Int64, SeekOrigin)

現在の OracleLob ストリームで位置を設定します。Sets the position on the current OracleLob stream.

SetLength(Int64)

OracleLob ストリームの長さを、現在の長さより短い値に設定します。Sets the length of the OracleLob stream to a value less than the current length.

ToString()

現在のオブジェクトを表す string を返します。Returns a string that represents the current object.

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

バイト シーケンスを現在の OracleLob ストリームに書き込み、書き込んだバイト数の分だけストリーム内の現在位置を進めます。Writes a sequence of bytes to the current OracleLob stream, and advances the current position within this stream by the number of bytes written.

Write(ReadOnlySpan<Byte>)

派生クラスによってオーバーライドされた場合は、現在のストリームにバイト シーケンスを書き込み、書き込んだバイト数の分だけストリームの現在位置を進めます。When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

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

現在のストリームにバイト シーケンスを非同期に書き込み、書き込んだバイト数だけストリーム内の現在位置を進めます。Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

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

現在のストリームにバイト シーケンスを非同期に書き込み、書き込んだバイト数だけストリーム内の現在位置を進め、キャンセル要求を監視します。Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests.

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

現在のストリームにバイト シーケンスを非同期に書き込み、書き込んだバイト数だけストリーム内の現在位置を進め、キャンセル要求を監視します。Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests.

(継承元 Stream)
WriteByte(Byte)

OracleLob ストリームの現在位置にバイトを書き込み、ストリームの位置を 1 バイトだけ進めます。Writes a byte to the current position in the OracleLob stream, and advances the position within the stream by one byte.

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

IDisposable.Dispose()

Stream によって使用されているすべてのリソースを解放します。Releases all resources used by the Stream.

(継承元 Stream)

適用対象