ヘッダーをスキップ
Oracle® Data Provider for .NET開発者ガイド
12c リリース1(12.1)
B72971-07
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

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

要件

プロバイダ 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.0, 4.5

スレッド安全性

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

// 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();
  }
}

OracleClobメンバー

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

OracleClobコンストラクタ

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

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

コンストラクタ 説明

OracleClobコンストラクタ


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


OracleClob静的フィールド

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

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

フィールド 説明

MaxSize


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

Null


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


OracleClob静的メソッド

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

表13-21 OracleClob静的メソッド

メソッド 説明

Equals

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


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

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

表13-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インスタンス・メソッドを、表13-23にリストします。

表13-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オブジェクトとともに作成します。

  • OracleClob(OracleConnection, bool, bool)

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

OracleClob(OracleConnection)

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

宣言

// C#
public OracleClob(OracleConnection con);

パラメータ

  • con

    OracleConnectionオブジェクト

例外

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

備考

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

OracleClob(OracleConnection, bool, bool)

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

宣言

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

パラメータ

  • con

    OracleConnectionオブジェクト接続

  • bCaching

    サーバー側のキャッシングが有効化されているかどうかを示すフラグ

  • bNCLOB

    インスタンスがNCLOBの場合はtrueに、CLOBの場合はfalseに設定されるフラグ

例外

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

備考

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

OracleClob静的フィールド

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

表13-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静的メソッドを、表13-25にリストします。

表13-25 OracleClob静的メソッド

メソッド 説明

Equals

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


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

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

表13-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インスタンス・メソッドを、表13-27にリストします。

表13-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インスタンスに追加します。

  • Append(byte[ ], int, int)

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

  • Append(char [ ], int, int)

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

Append(OracleClob)

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

宣言

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

パラメータ

  • obj

    OracleClobオブジェクト

例外

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

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

備考

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

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

Append(byte[ ], int, int)

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

宣言

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

パラメータ

  • buffer

    Unicode文字列を表すバイト配列

  • offset

    データ読取り元バッファのゼロ・ベースのバイト・オフセット

  • 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);

パラメータ

  • buffer

    文字の配列

  • offset

    データ読取り元バッファのゼロ・ベース・オフセット(文字)

  • 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);

パラメータ

  • src_offset

    現行インスタンスの比較開始ポイント(文字)

  • obj

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

  • dst_offset

    指定されたOracleClobの比較開始ポイント(文字)

  • amount

    比較する文字数

戻り値

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

  • ゼロ未満: 現行のインスタンスが参照するデータが、指定されたインスタンスのデータより小さい場合

  • ゼロ: どちらのオブジェクトも同じデータを参照する場合

  • ゼロ超過: 現行のインスタンスが参照するデータが、指定されたインスタンスのデータより大きい場合

例外

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

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

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

備考

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

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

CopyTo

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

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

  • CopyTo(OracleClob)

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

  • CopyTo(OracleClob, Int64)

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

  • CopyTo(Int64, OracleClob, Int64, Int64)

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

CopyTo(OracleClob)

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

宣言

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

パラメータ

  • obj

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

戻り値

戻り値はコピーされた数

例外

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

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

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

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

備考

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

CopyTo(OracleClob, Int64)

このインスタンス・メソッドでは、データを現行のOracleClobインスタンスから指定された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)

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

宣言

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

パラメータ

  • src_offset

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

  • obj

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

  • dst_offset

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

  • 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()

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

  • Erase(Int64, Int64)

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

Erase()

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

宣言

// C#
public Int64 Erase();

戻り値

消去済文字数

Erase(Int64, Int64)

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

宣言

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

パラメータ

  • offset

    オフセット

  • 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);

パラメータ

  • obj

    OracleClobオブジェクト

戻り値

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

備考

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

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

Read

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

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

  • Read(byte[ ], int, int)

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

  • Read(char[ ], int, int)

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

Read(byte[ ], int, int)

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

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

宣言

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

パラメータ

  • buffer

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

  • offset

    バッファに移入されるオフセット(バイト)

  • 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);

パラメータ

  • buffer

    移入される文字配列バッファ

  • offset

    バッファに移入されるオフセット(文字)

  • count

    読み取られる文字数

戻り値

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

例外

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

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

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

  • offsetまたはcount0未満の場合

  • offsetbuffer.Length以上である場合

  • offsetおよびcountの合計がbuffer.Lengthより大きい場合

備考

すべての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の現行インスタンスでバイト配列で表される文字パターンを検索します。

  • Search(char[ ], Int64, Int64)

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

Search(byte[ ], Int64, Int64)

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

宣言

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

パラメータ

  • val

    Unicodeバイト配列

  • offset

    OracleClobの検索の起点の0ベース・オフセット(文字)

  • nth

    絶対オフセット(文字)が戻される特定の一致の出現(1ベース)

戻り値

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

例外

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

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

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

  • offset0未満の場合

  • nth0以下の場合

  • nthOracleClob.MaxSize以上の場合

  • offsetOracleClob.MaxSize以上の場合

備考

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

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

Search(char[ ], Int64, Int64)

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

宣言

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

パラメータ

  • val

    検索対象のUnicode文字列

  • offset

    OracleClobの検索の起点の0ベース・オフセット(文字)

  • nth

    絶対オフセット(文字)が戻される特定の一致の出現(1ベース)

戻り値

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

例外

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

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

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

  • offset0未満の場合

  • nth0以下の場合

  • val.Lengthの2倍が16383より大きい場合

  • nthOracleClob.MaxSize以上の場合

  • offsetOracleClob.MaxSize以上の場合

備考

検索パターンの制限は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);

パラメータ

  • offset

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

  • origin

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

戻り値

位置を示す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);

パラメータ

  • newlen

    現行ストリームに必要な長さ(文字)

例外

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

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

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

Write

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

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

  • Write(byte[ ], int, int)

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

  • Write(char[ ], int, int)

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

Write(byte[ ], int, int)

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

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

宣言

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

パラメータ

  • buffer

    Unicode文字列を表すバイト配列バッファ

  • offset

    bufferの読取り元のオフセット(バイト)

  • count

    OracleClobに書き込みされるバッファのデータ数(バイト)

例外

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

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

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

  • offsetまたはcount0未満の場合

  • offsetbuffer.Length以上である場合

  • offsetおよびcountの合計がbuffer.Lengthより大きい場合

  • offsetcountまたはPositionが偶数の場合

備考

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

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

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

Write(char[ ], int, int)

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

宣言

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

パラメータ

  • buffer

    OracleClobに書き込まれた文字配列バッファ

  • offset

    bufferの読取り元のオフセット(文字)

  • count

    OracleClobに書き込まれるバッファ数(文字)

例外

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

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

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

  • offsetまたはcount0未満の場合

  • offsetbuffer.Length以上である場合

  • offsetおよびcountの合計がbuffer.Lengthより大きい場合

  • Positionが偶数でない場合

備考

すべての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();
  }
}