8.5.35 PreparedStatementインタフェースに関する注意事項
PreparedStatementインタフェースはStatementインタフェースのサブインタフェースであるため,Statementインタフェースの注意事項はすべて該当します。
ここでは,それ以外のPreparedStatementインタフェース固有の注意事項について説明します。
- 〈この項の構成〉
(1) ?パラメタの設定
-
setXXXメソッドによってマッピングできるかどうかについては,「7.6.1 データ型のマッピング」の「(3) ?パラメタ設定時のマッピング」を参照してください。
-
setXXXメソッドに指定した列番号が存在しない場合は,SQLExceptionが投入されます。
-
setXXXメソッドに指定した値が,対応する?パラメタのデータ型が表現できる値の範囲を超えた場合,オーバフローが発生してSQLExceptionが投入されます。オーバフローが発生するおそれのあるsetXXXメソッドとHADBのデータ型の組み合わせについては,「7.6.3 オーバフローが発生したときの処理」を参照してください。
-
setXXXメソッドで設定した値は,次に示すどれかの操作をするまで有効になります。
-
該当するPreparedStatementオブジェクトに対して,clearParametersメソッドを実行する
-
該当するPreparedStatementオブジェクトに対して,setXXXメソッドを実行し,かつ設定対象の?パラメタは同じである
-
該当するPreparedStatementオブジェクトに対して,closeメソッドを実行する
-
(2) HADBのDECIMAL型またはNUMERIC型の?パラメタに対する値指定
HADBのDECIMAL型またはNUMERIC型の?パラメタに対してsetXXXメソッドで値を設定する場合,?パラメタの精度および位取りと,値の精度および位取りが一致していないときの処理を次に示します。
-
実際の精度よりも大きいとき:SQLExceptionが投入されます。
-
実際の精度よりも小さいとき:拡張します。
-
実際の位取りよりも大きいとき:実際の位取りで切り捨てます。
-
実際の位取りよりも小さいとき:0で補完し拡張します。
(3) HADBのTIME型およびTIMESTAMP型の?パラメタに対する値指定
小数秒精度が低いデータ型に小数秒精度が高いデータ型を指定した場合,差分の小数秒精度が切り捨てられます。逆に,小数秒精度が高いデータ型に小数秒精度が低いデータ型を指定した場合,差分の小数秒精度に0を補い拡張されます。
(4) HADBのCHARまたはVARCHAR型の?パラメタに対する値指定
HADBのCHAR型またはVARCHAR型の?パラメタに対してsetXXXメソッドで値を指定する場合,?パラメタの定義長よりも値を文字列表現にしたときの長さが大きいと,SQLExceptionが投入されます。
(5) setObjectで指定できるオブジェクト
setObjectメソッドの引数xに指定できるオブジェクトは,次に示す型のオブジェクトです。
-
byte[]
-
java.lang.Byte
-
java.lang.Double
-
java.lang.Float
-
java.lang.Integer
-
java.lang.Long
-
java.lang.Short
-
java.lang.String
-
java.math.BigDecimal
-
java.sql.Boolean
-
java.sql.Date
-
java.sql.Time
-
java.sql.Timestamp