長い文字列値またはバイナリ・データをフェッチする場合、データを分割してフェッチするメソッドがいくつかあります。バイナリ・データの場合は GetBytes メソッド、文字列データの場合は GetChars メソッドを使用します。それ以外の場合、データベースからフェッチする他のデータと同じ方法で BLOB データが処理されます。
詳細については、GetBytes メソッドとGetChars メソッドを参照してください。
Connection オブジェクトを宣言して初期化します。
接続を開きます。
SQL 文を定義して実行する Command オブジェクトを追加します。
SACommand cmd = new SACommand( "SELECT int_col, blob_col FROM test", conn ); |
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; } |
DataReader オブジェクトと Connection オブジェクトを閉じます。
reader.Close(); conn.Close(); |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |