16.9.2 ?パラメタでの指定方法
?パラメタに値を指定する場合,PreparedStatement. setBlob()メソッド,及びCallableStatement.setBlob()メソッドを使用する方法があります。これらを使用する場合の注意点を次に示します。
- 〈この項の構成〉
(1) Blobインタフェースを実装したオブジェクトを使用する場合
setBlob()メソッドを使用する場合,Blobインタフェースを実装したオブジェクトを指定する必要があります。また,Blobインタフェースを実装したオブジェクトをUAPが作成する必要があります。
JDBCでは,Blob.getBytes()メソッドで,設定する値をbyte[]の形式で取得します。次に示す方法で,設定する値を取得します。
Blob.getBytes(1, (int)(Blob.length()))
UAPでは,getBytes()メソッドとlength()メソッドでは,正常な値を返す必要があります。JDBCでは,これらのメソッドで返される値が正しいものとして動作します。
(2) ResultSet.getBlob()メソッド,又はCallableStatement.getBlob()メソッドで取得したBlobオブジェクトを使用する場合
JDBCからの実行結果として,ResultSet.getBlob()メソッドやCallableStatement.getBlob()メソッドで取得したBlobオブジェクトをそのまま使用する場合,位置付け子機能を使用したアクセスでの取得かどうかで動作が異なります。
-
位置付け子機能を使用したアクセスでない場合
ResultSet.getBlob()メソッドやCallableStatement.getBlob()メソッドで取得した時点でのデータを,?パラメタの値とします。
-
位置付け子機能を使用したアクセスの場合
setBlob()メソッドを呼び出した場合に,内部でBlob.getBytes(1, (int)(Blob.length()))を実行します。?パラメタの値は,Blob.getBytes(1, (int)(Blob.length()))で取得されたデータとなります。