ヘッダーをスキップ
Oracle Data Provider for .NET開発者ガイド
11gリリース1(11.1.0.6.20)
E06104-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

OracleClobクラス

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


注意:

OracleClobオブジェクトでは、.NET Frameworkバイト配列を使用したCLOBデータの取得または書込み時に、クライアント側のキャラクタ・セットが使用されます。

クラスの継承

System.Object

  System.MarshalByRefObject

    System.IO.Stream

      Oracle.DataAccess.Types.OracleClob

宣言

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

スレッド安全性

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

// C#
 
using System;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
 
class OracleClobSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    OracleClob clob = new OracleClob(con);        
 
    // Write 4 chars from writeBuffer, starting at buffer offset 0
    char[] writeBuffer = new char[4] {'a', 'b', 'c', 'd'};
    clob.Write(writeBuffer, 0, 4);
 
    // Append first 2 chars from writeBuffer {'a', 'b'} to the oracleClob
    clob.Append(writeBuffer, 0, 2);
 
    // Prints "clob.Length  = 12"
    Console.WriteLine("clob.Length  = " + clob.Length);
 
    // Reset the Position for the Read
    clob.Position = 0;
 
    // Read 6 chars into readBuffer, starting at buffer offset 0
    char[] readBuffer = new char[6];       
    int charsRead = clob.Read(readBuffer, 0, 6);
 
    // Prints "charsRead    = 6"
    Console.WriteLine("charsRead    = " + charsRead);    
 
    // Prints "readBuffer   = abcdab"
    Console.Write("readBuffer   = ");
    for(int index = 0; index <  readBuffer.Length; index++)
    {
      Console.Write(readBuffer[index]);
    }
    Console.WriteLine();
        
    // Search for the 2nd occurrence of a char pattern 'ab'
    // starting from char offset 0 in the OracleClob
    char[] pattern = new char[2] {'a', 'b'};
    long posFound = clob.Search(pattern, 0, 2);
 
    // Prints "posFound     = 5" 
    Console.WriteLine("posFound     = " + posFound);          
      
    // Erase 4 chars of data starting at char offset 1
    // Sets chars to ''
    clob.Erase(1, 4);
 
    //Prints "clob.Value   = a    b"
    Console.WriteLine("clob.Value   = " + clob.Value);
 
    clob.Close();
    clob.Dispose();
 
    con.Close();
    con.Dispose();
  }
}

要件

ネームスペース: Oracle.DataAccess.Types

アセンブリ: Oracle.DataAccess.dll

Microsoft .NET Frameworkバージョン1.0以降


OracleClobメンバー

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

OracleClobコンストラクタ

OracleClobコンストラクタを、表11-19にリストします。

表11-19 OracleClobコンストラクタ

コンストラクタ 説明

OracleClobコンストラクタ


一時CLOBにバインドされたOracleClobクラスのインスタンスを作成します(オーバーロード)


OracleClob静的フィールド

OracleClob静的フィールドを、表11-20にリストします。

表11-20 OracleClob静的フィールド

フィールド 説明

MaxSize


CLOBが保持できる最大バイト数、4,294,967,295(2^32 - 1)バイトを保持します

Null


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


OracleClob静的メソッド

OracleClob静的メソッドを、表11-21にリストします。

表11-21 OracleClob静的メソッド

メソッド 説明

Equals

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


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

OracleClobインスタンス・プロパティを、表11-22にリストします。

表11-22 OracleClobインスタンス・プロパティ

プロパティ 説明

CanRead


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

CanSeek


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

CanWrite


LOBストリームが書込み可能かどうかを示します

Connection


CLOBデータの取得および書込みに使用するOracleConnectionを示します

IsEmpty


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

IsInChunkWriteMode


CLOBがオープンされているかどうかを示します

IsNCLOB


OracleClobオブジェクトがNCLOBを表すかどうかを示します

IsNull


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

IsTemporary


現行インスタンスが一時CLOBにバインドされているかどうかを示します

Length


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

OptimumChunkSize


読取りまたは書込み操作中にデータベースから取得または送信する最小バイト数を示します

Position


LOBストリームの現行の読取りまたは書込み位置をバイト表示で示します

Value


データをCLOBまたはNCLOBの最初の文字を起点とする文字列として戻します


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

OracleClobインスタンス・メソッドを、表11-23にリストします。

表11-23 OracleClobインスタンス・メソッド

メソッド 説明

Append


現行のOracleClobインスタンスにデータを追加します(オーバーロード)

BeginChunkWrite


CLOBをオープンします

BeginRead

System.IO.Streamから継承します

BeginWrite

System.IO.Streamから継承します

Clone


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

Close


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

Compare


現行インスタンスが参照するデータと指定されたオブジェクトのデータを比較します

CopyTo


OracleClobにデータをコピーします(オーバーロード)

CreateObjRef

System.MarshalByRefObjectからの継承

Dispose


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

EndChunkWrite


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

EndRead

System.IO.Streamから継承します

EndWrite

System.IO.Streamから継承します

Equals

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

Erase


指定されたデータamountを消去します(オーバーロード)

Flush

サポート対象外

GetHashCode


現行インスタンスのハッシュ・コードを戻します

GetLifetimeService

System.MarshalByRefObjectからの継承

GetType

System.Objectからの継承

InitializeLifetimeService

System.MarshalByRefObjectからの継承

IsEqual


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

Read


現行インスタンスから読み取ります(オーバーロード)

ReadByte

System.IO.Streamから継承します

Search


OracleClobの現行インスタンスの文字パターンを検索します(オーバーロード)

Seek


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

SetLength


CLOB値を切り捨てます

ToString

System.Objectからの継承

Write


指定されたbufferOracleClobに書き込みます(オーバーロード)

WriteByte

System.IO.Streamから継承します



OracleClobコンストラクタ

OracleClobコンストラクタでは、一時CLOBにバインドされたOracleClobクラスのインスタンスを作成します。

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

OracleClob(OracleConnection)

このコンストラクタでは、一時CLOBにバインドされたOracleClobクラスのインスタンスをOracleConnectionオブジェクトとともに作成します。

宣言

// C#
public OracleClob(OracleConnection con);

パラメータ

例外

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

備考

接続は、アプリケーションによって明示的にオープンされる必要があります。OracleClobでは、接続を暗黙的にオープンしません。一時CLOBでは、指定された接続を使用してCLOBデータを格納します。デフォルトではキャッシングは有効化されていません。

OracleClob(OracleConnection, bool, bool)

このコンストラクタでは、一時CLOBにバインドされたOracleClobクラスのインスタンスを、OracleConnectionオブジェクト、キャッシング用のブール値およびNCLOB用ブール値とともに作成します。

宣言

// C#
public OracleClob(OracleConnection con, bool bCaching, bool bNCLOB);

パラメータ

例外

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

備考

接続は、アプリケーションによって明示的にオープンされる必要があります。OracleClobでは、接続を暗黙的にオープンしません。一時CLOBまたはNCLOBでは、指定された接続を使用してCLOBデータを格納します。


OracleClob静的フィールド

OracleClob静的フィールドを、表11-24にリストします。

表11-24 OracleClob静的フィールド

フィールド 説明

MaxSize


CLOBが保持できる最大バイト数、4,294,967,295(2^32 - 1)バイトを保持します

Null


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


MaxSize

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

宣言

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

備考

このフィールドは、ユーザー操作が許容最大長(バイト表示)を超えているかどうかをチェックするコードに便利です。

Null

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

宣言

// C#
public static readonly OracleClob Null;

OracleClob静的メソッド

OracleClob静的メソッドを、表11-25にリストします。

表11-25 OracleClob静的メソッド

メソッド 説明

Equals

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



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

OracleClobインスタンス・プロパティを、表11-26にリストします。

表11-26 OracleClobインスタンス・プロパティ

プロパティ 説明

CanRead


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

CanSeek


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

CanWrite


LOBストリームが書込み可能かどうかを示します

Connection


CLOBデータの取得および書込みに使用するOracleConnectionを示します

IsEmpty


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

IsInChunkWriteMode


CLOBがオープンされているかどうかを示します

IsNCLOB


OracleClobオブジェクトがNCLOBを表すかどうかを示します

IsNull


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

IsTemporary


現行インスタンスが一時CLOBにバインドされているかどうかを示します

Length


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

OptimumChunkSize


読取りまたは書込み操作中にデータベースから取得または送信する最小バイト数を示します

Position


LOBストリームの現行の読取りまたは書込み位置をバイト表示で示します

Value


データをCLOBまたはNCLOBの最初の文字を起点とする文字列として戻します


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;}

プロパティ値

LOBストリームが書き込み可能の場合は、trueを戻し、それ以外の場合はfalseを戻します。

Connection

このインスタンス・プロパティでは、CLOBデータの取得および書込みに使用するOracleConnectionを示します。

宣言

// C#
public OracleConnection Connection {get;}

プロパティ値

OracleConnection

例外

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

IsEmpty

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

宣言

// C#
public bool IsEmpty {get;}

プロパティ値

bool

例外

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

IsInChunkWriteMode

このインスタンス・プロパティでは、索引更新を遅延させるためにCLOBがオープンされているかどうかを示します。

宣言

// C#
public bool IsInChunkWriteMode{get;}

プロパティ値

CLOBがオープンされている場合はtrueを戻し、それ以外の場合はfalseを戻します。

IsNCLOB

このインスタンス・プロパティでは、OracleClobオブジェクトがNCLOBを表すかどうかを示します。

宣言

// C#
public bool IsNCLOB {get;}

プロパティ値

bool

IsNull

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

宣言

// C#
public bool IsNull{get;}

プロパティ値

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

IsTemporary

このインスタンス・プロパティでは、現行のインスタンスが一時CLOBにバインドされているかどうかを示します。

宣言

// C#
public bool IsTemporary {get;}

プロパティ値

bool

Length

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

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

宣言

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

プロパティ値

CLOBのサイズをバイト数で示すInt64

例外

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

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

OptimumChunkSize

このインスタンス・プロパティでは、読取りまたは書込み操作中にデータベースから取得または送信する最小バイト数を示します。

宣言

// C#
public int OptimumChunkSize{get;}

プロパティ値

取得または送信する最小バイトを表す数

例外

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

Position

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

このインスタンスでは、LOBストリームの現行の読取りまたは書込み位置をバイト数で示します。

宣言

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

プロパティ値

読取りまたは書込み位置を示すInt64

例外

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

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

ArgumentOutOfRangeException: Position0未満です。

Value

このプロパティ・インスタンスでは、CLOBまたはNCLOBの最初の文字を起点とするデータを文字列として戻します。

宣言

// C#
public string Value{get;}

プロパティ値

文字列

例外

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

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

ArgumentOutOfRangeException: Value0未満です。

備考

このプロパティの使用により、Positionの値が使用または変更されることはありません。

このプロパティが戻すことができる文字列の最大長は2GBです。


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

OracleClobインスタンス・メソッドを、表11-27にリストします。

表11-27 OracleClobインスタンス・メソッド

メソッド 説明

Append


現行のOracleClobインスタンスにデータを追加します(オーバーロード)

BeginChunkWrite


CLOBをオープンします

BeginRead

System.IO.Streamから継承します

BeginWrite

System.IO.Streamから継承します

Clone


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

Close


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

Compare


現行インスタンスが参照するデータと指定されたオブジェクトのデータを比較します

CopyTo


OracleClobにデータをコピーします(オーバーロード)

CreateObjRef

System.MarshalByRefObjectからの継承

Dispose


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

EndChunkWrite


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

EndRead

System.IO.Streamから継承します

EndWrite

System.IO.Streamから継承します

Equals

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

Erase


指定されたデータamountを消去します(オーバーロード)

Flush

サポート対象外

GetHashCode


現行インスタンスのハッシュ・コードを戻します

GetLifetimeService

System.MarshalByRefObjectからの継承

GetType

System.Objectからの継承

InitializeLifetimeService

System.MarshalByRefObjectからの継承

IsEqual


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

Read


現行インスタンスから読み取ります(オーバーロード)

ReadByte

System.IO.Streamから継承します

Search


OracleClobの現行インスタンスの文字パターンを検索します(オーバーロード)

Seek


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

SetLength


CLOB値を切り捨てます

ToString

System.Objectからの継承

Write


指定されたbufferOracleClobに書き込みます(オーバーロード)

WriteByte

System.IO.Streamから継承します


Append

このインスタンス・メソッドでは、現行のOracleClobインスタンスにデータを追加します。

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

Append(OracleClob)

このインスタンス・メソッドでは、指定されたOracleClobオブジェクトが参照するCLOBデータを現行のOracleClobインスタンスに追加します。

宣言

// C#
public void Append(OracleClob obj);

パラメータ

例外

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

InvalidOperationException: パラメータにオブジェクト以外の接続があるか、OracleConnectionがオープンされていないか、またはOracleConnectionが再オープンされています。

備考

キャラクタ・セット変換は行われません。

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

Append(byte[ ], int, int)

このインスタンス・メソッドでは、指定されたバイト配列バッファのオフセット(バイト単位)から始まる、指定されたバイト配列バッファのデータをCLOBの最後に追加します。

宣言

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

パラメータ

例外

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

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

ArgumentOutOfRangeException: offsetまたはcountパラメータのいずれかが偶数でない場合。

備考

それぞれ2バイトで1 Unicode文字となるため、CLOBおよびNCLOBに対するoffsetcountの両方が偶数である必要があります。

Append(char [ ], int, int)

このインスタンス・メソッドでは、指定された文字バッファのオフセット(文字表示)で始まるデータを、指定された文字配列バッファから現行のOracleClobインスタンスの最後に追加します。

宣言

// C#
public void Append(char[] buffer, int offset, int count);

パラメータ

例外

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

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

// C#
 
using System;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
 
class AppendSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    OracleClob clob = new OracleClob(con);
      
    // Append 2 chars {'d', 'e'} to the OracleClob
    char[] buffer = new char[3] {'d', 'e', 'f'};
    clob.Append(buffer, 0, 2);
 
    // Prints "clob.Value = de"
    Console.WriteLine("clob.Value = " + clob.Value);
     
    clob.Close();
    clob.Dispose();
 
    con.Close();
    con.Dispose();
  }
}

BeginChunkWrite

このインスタンス・メソッドでは、CLOBをオープンします。

宣言

// C#
public void BeginChunkWrite();

例外

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

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

備考

BeginChunkWriteCLOBデータの処理前に呼び出す必要はありません。これはパフォーマンス上の理由で提供されています。

このメソッドを呼び出した後は、書き込み操作を行っても列上のドメインまたは機能ベースの索引は更新されません。索引を更新できるのは、EndChunkWriteを呼び出した後に1回のみです。

Clone

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

宣言

// C#
public object Clone();

戻り値

OracleClobオブジェクト

実装

ICloneable

例外

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

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

備考

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

// C#
 
using System;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
 
class CloneSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    OracleClob clob1 = new OracleClob(con);
 
    // Prints "clob1.Position = 0"
    Console.WriteLine("clob1.Position = " + clob1.Position);
    
    // Set the Position before calling Clone()
    clob1.Position = 1;
 
    // Clone the OracleClob
    OracleClob clob2 = (OracleClob)clob1.Clone();    
    
    // Prints "clob2.Position = 1"
    Console.WriteLine("clob2.Position = " + clob2.Position);
 
    clob1.Close(); 
    clob1.Dispose();
 
    clob2.Close();
    clob2.Dispose();
 
    con.Close();
    con.Dispose();
  }
}

Close

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

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

宣言

// C#
public override void Close();

Compare

このインスタンス・メソッドでは、現行のインスタンスが参照するデータと指定されたオブジェクトのデータを比較します。

宣言

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

パラメータ

戻り値

メソッドが戻す値は次のとおりです。

例外

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

InvalidOperationException: パラメータにオブジェクト以外の接続があるか、OracleConnectionがオープンされていないか、またはOracleConnectionが再オープンされています。

ArgumentOutOfRangeException: src_offsetdst_offsetまたはamountパラメータのいずれかが0より小さい場合。

備考

比較対象の2つのOracleClobオブジェクトのキャラクタ・セットは、有効な比較に対して同じである必要があります。

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

CopyTo

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

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

CopyTo(OracleClob)

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

宣言

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

パラメータ

戻り値

戻り値はコピーされた数

例外

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

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

備考

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

CopyTo(OracleClob, Int64)

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

宣言

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

パラメータ

戻り値

戻り値はコピーされた数

例外

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

ArgumentOutOfRangeException: dst_offset0未満です。

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

備考

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

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

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

CopyTo(Int64, OracleClob, Int64, Int64)

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

宣言

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

パラメータ

戻り値

戻り値はコピーされた数

例外

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

InvalidOperationException: パラメータにオブジェクト以外の接続があるか、OracleConnectionがオープンされていないか、またはOracleConnectionが再オープンされています。

ArgumentOutOfRangeException: src_offsetdst_offsetまたはamountパラメータが0より小さい場合。

備考

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

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

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

// C#
 
using System;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
 
class CopyToSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
    
    OracleClob clob1 = new OracleClob(con);
    OracleClob clob2 = new OracleClob(con);
      
    // Write 4 chars, starting at buffer offset 0
    char[] buffer = new char[4] {'a', 'b', 'c', 'd'};    
    clob1.Write(buffer, 0, 4);
 
    // Copy 2 chars from char 0 of clob1 to char 1 of clob2
    clob1.CopyTo(0, clob2, 1, 2);
    
    //Prints "clob2.Value =  ab"
    Console.WriteLine("clob2.Value = " + clob2.Value);
        
    clob1.Close(); 
    clob1.Dispose();
 
    clob2.Close();
    clob2.Dispose();
 
    con.Close();
    con.Dispose();
  }
}

Dispose

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

宣言

public void Dispose();

実装

IDisposable

備考

オブジェクトは、処理後は再度使用できません。一部のプロパティには継続してアクセスできますが、その値は適切ではありません。リソースが解放されているため、メソッドのコールにより例外が発生することがあります。

EndChunkWrite

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

宣言

// C#
public void EndChunkWrite();

例外

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

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

備考

BeginChunkWriteメソッドによって書込み操作が遅延する場合は、ただちに索引更新が行われます。

Erase

Eraseでは、データの一部またはすべてを消去します。

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

Erase()

このインスタンス・メソッドでは、すべてのデータを消去します。

宣言

// C#
public Int64 Erase();

戻り値

消去済文字数

Erase(Int64, Int64)

このインスタンス・メソッドでは、指定されたoffsetで始まる指定されたデータamount(文字表示)をゼロ・バイト充填文字(文字表示)で置き換えます。

宣言

// C#
public Int64 Erase(Int64 offset, Int64 amount);

パラメータ

戻り値

消去済実績文字数

例外

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

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

ArgumentOutOfRangeException: offsetまたはamountパラメータは0未満です。

GetHashCode

Objectをオーバーライドします。

このメソッドにより、現行インスタンスのハッシュ・コードを戻します。

宣言

// C#
public override int GetHashCode();

戻り値

ハッシュ・コードを表すint

IsEqual

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

宣言

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

パラメータ

戻り値

現行のOracleClobおよび指定されたOracleClobが同じLOBを参照する場合は、trueを戻します。それ以外の場合はfalseを戻します。

備考

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

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

Read

Readでは、現行インスタンスから指定数を読み取り、配列バッファに移入します。

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

Read(byte[ ], int, int)

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

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

宣言

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

パラメータ

戻り値

CLOBから読み取られるバイト数

例外

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

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

備考

それぞれ2バイトで1 Unicode文字となるため、CLOBおよびNCLOBに対するoffsetcountの両方が偶数である必要があります。

LOBデータの読取りは、Positionプロパティにより指定された位置から開始されます。その位置は偶数である必要があります。

OracleClobでは、ストリームが終点に達していない場合でも、要求より少ないバイト数を自由に戻すことができます。

Read(char[ ], int, int)

このインスタンス・メソッドでは、現行のインスタンスから指定バイト数を読み取り、文字配列バッファに移入します。

宣言

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

パラメータ

戻り値

戻り値はCLOBから読み取られる文字数を示します。

例外

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

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

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

備考

すべてのCLOBおよびNCLOBデータをUnicodeとして処理します。

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

// C#
 
using System;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
 
class ReadSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    OracleClob clob = new OracleClob(con);
    
    // Write 3 chars, starting at buffer offset 1
    char[] writeBuffer = new char[4] {'a', 'b', 'c', 'd'};
    clob.Write(writeBuffer, 1, 3);
 
    // Reset the Position (in bytes) for Read
    clob.Position = 2;
 
    // Read 2 chars into buffer starting at buffer offset 1
    char[] readBuffer = new char[4];    
    int charsRead = clob.Read(readBuffer, 1, 2);
 
    // Prints "charsRead  = 2"
    Console.WriteLine("charsRead  = " + charsRead);    
 
    // Prints "readBuffer =  cd "
    Console.Write("readBuffer = ");
    for(int index = 0; index <  readBuffer.Length; index++)
    {
      Console.Write(readBuffer[index]);
    }
    Console.WriteLine();
    
    clob.Close();
    clob.Dispose();
 
    con.Close();
    con.Dispose();
  }
}

Search

Searchでは、OracleClobの現行のインスタンスの文字パターンを検索します。

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

Search(byte[ ], Int64, Int64)

このインスタンス・メソッドでは、OracleClobの現行インスタンスでバイト配列で表される文字パターンを検索します。

宣言

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

パラメータ

戻り値

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

例外

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

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

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

備考

byte[ ]は検索前にUnicodeに変換されます。

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

Search(char[ ], Int64, Int64)

このインスタンス・メソッドでは、OracleClobの現行インスタンスの文字パターンを検索します。

宣言

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

パラメータ

戻り値

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

例外

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

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

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

備考

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

// C#
 
using System;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
 
class SearchSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    OracleClob clob = new OracleClob(con);
    
    // Write 7 chars, starting at buffer offset 0
    char[] buffer = new char[7] {'a', 'b', 'c', 'd', 'a', 'b', 'c'};
    clob.Write(buffer, 0, 7);
      
    // Search for the 2nd occurrence of a char pattern 'bc'
    // starting at offset 1 in the OracleBlob
    char[] pattern = new char[2] {'b', 'c'};
    long posFound = clob.Search(pattern, 1, 2);
 
    // Prints "posFound = 6" 
    Console.WriteLine("posFound = " + posFound);
          
    clob.Close();
    clob.Dispose();
 
    con.Close();
    con.Dispose();
  }
}

Seek

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

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

宣言

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

パラメータ

戻り値

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

例外

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

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

備考

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

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

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

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

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

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

SetLength

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

このインスタンス・メソッドでは、CLOB値を指定された長さ(文字表示)に切り捨てます。

宣言

// C#
public override void SetLength(Int64 newlen);

パラメータ

例外

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

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

ArgumentOutOfRangeException: newlenパラメータは0より大きい場合。

Write

このインスタンス・メソッドでは、指定された配列バッファからOracleClobにデータを書き込みます。

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

Write(byte[ ], int, int)

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

このインスタンス・メソッドでは、指定されたバイト配列バッファからOracleClobにデータを書き込みます。

宣言

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

パラメータ

例外

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

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

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

備考

それぞれ2バイトで1 Unicode文字となるため、CLOBおよびNCLOBに対するoffsetcountの両方が偶数である必要があります。

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

必要に応じて、クライアント・キャラクタ・セットからデータベース・キャラクタ・セットに適切なデータ変換が行われます。

Write(char[ ], int, int)

このインスタンス・メソッドでは、指定された文字配列バッファからOracleClobにデータを書き込みます。

宣言

// C#
public void Write(char[ ] buffer, int offset, int count);

パラメータ

例外

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

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

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

備考

すべてのCLOBおよびNCLOBデータをUnicodeとして処理します。

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

必要に応じて、クライアント・キャラクタ・セットからデータベース・キャラクタ・セットに適切なデータ変換が行われます。

// C#
 
using System;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
 
class WriteSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    OracleClob clob = new OracleClob(con);
      
    // Set the Position for the Write;
    clob.Position = 0;
 
    // Begin ChunkWrite to improve performance
    // Index updates occur only once after EndChunkWrite
    clob.BeginChunkWrite();         
      
    // Write to the OracleClob in 5 chunks of 2 chars each
    char[] c = new char[2] {'a', 'b'};
    for (int index = 0; index < 5; index++)
    {
      clob.Write(c, 0, c.Length);
    }
    clob.EndChunkWrite();
 
    // Prints "clob.Value = ababababab"
    Console.WriteLine("clob.Value = " + clob.Value);
 
    clob.Close();
    clob.Dispose();
 
    con.Close();
    con.Dispose();
  }
}