Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - プログラミング » SQL Anywhere データ・アクセス API » SQL Anywhere .NET データ・プロバイダ » データのアクセスと操作

 

BLOB の処理

長い文字列値またはバイナリ・データをフェッチする場合、データを分割してフェッチするメソッドがいくつかあります。バイナリ・データの場合は GetBytes メソッド、文字列データの場合は GetChars メソッドを使用します。それ以外の場合、データベースからフェッチする他のデータと同じ方法で BLOB データが処理されます。

詳細については、GetBytes メソッドGetChars メソッドを参照してください。

♦  GetChars メソッドを使用して文字列を返す文を発行するには、次の手順に従います。
  1. Connection オブジェクトを宣言して初期化します。

  2. 接続を開きます。

  3. SQL 文を定義して実行する Command オブジェクトを追加します。

    SACommand cmd = new SACommand(
        "SELECT int_col, blob_col FROM test", conn );
  4. DataReader オブジェクトを返す ExecuteReader メソッドを呼び出します。

    SADataReader reader = cmd.ExecuteReader();

    次のコードは、結果セットから 2 つのカラムを読み込みます。最初のカラムは整数 (GetInt32( 0 )) で、2 番目のカラムは LONG VARCHAR です。GetChars を使用して、LONG VARCHAR カラムから 100 文字が 1 回で読み込まれます。

    int length = 100;
    char[] buf = new char[ length ];
    int intValue;
    long dataIndex = 0;
    long charsRead = 0;
    long blobLength = 0;
    while( reader.Read() ) {
        intValue = reader.GetInt32( 0 );
        while ( ( charsRead = reader.GetChars(
            1, dataIndex, buf, 0, length ) ) == ( long )
                length ) {
        dataIndex += length;
    }
    blobLength = dataIndex + charsRead;
    }
  5. DataReader オブジェクトと Connection オブジェクトを閉じます。

    reader.Close();
    conn.Close();