Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 互換編


18.14 PreparedStatementクラス

説明

PreparedStatementクラスでは,主に次の機能を提供します。

  • パラメタ付きSQLの実行

  • パラメタの設定

  • 検索結果として,ResultSetオブジェクトの生成および返却

  • 更新結果として,更新行数の返却

PreparedStatementクラスの提供する各メソッドの詳細および使用方法については,JavaSoft提供のJDBC関連ドキュメントを参照してください。

なお,PreparedStatementクラスはStatementクラスのサブクラスです。Statementクラスの機能をすべて継承します。

注意事項
  • PreparedStatementクラスはStatementクラスのサブクラスであるため,Statementクラスの注意事項はすべて該当します。Statementクラスの注意事項を参照してください。

  • HiRDBを使用する場合でのTIME型,DATE型,TIMESTAMP型の列に対するデータ変換処理

    TIME型,DATE型,またはTIMESTAMP型の列に対して,setTime,setDate,setTimestampおよびsetStringメソッドを使用してデータが設定された場合,HiRDBのデータ型に応じてデータが変換されます。列のデータ型と,メソッドとの組み合わせによる,変換処理について次の表に示します。なお,実際に存在しない日時を指定した場合は,JavaVMの返す値となります。

    表18‒78 TIME型,DATE型,TIMESTAMP型とsetXXXメソッドとの変換

    setXXXメソッド

    HiRDB列属性

    TIME

    DATE

    TIMESTAMP

    setTime(Time Obj)※1

    設定値をデータベースに格納します。

    HiRDBのエラーを返します。

    設定値hh:mm:ss[.000000]の前に1970-01-01を付加したデータをデータベースに格納します。

    setDate(Date Obj)※2

    HiRDBのエラーを返します。

    設定値をデータベースに格納します。

    設定値yyyy-MM-DDの後ろに00:00:00[.000000]を付加したデータをデータベースに格納します。

    setTimestamp(Timestamp Obj)※3

    HiRDBのエラーを返します。

    設定値からyyyy-MM-DDを抜き出したデータをデータベースに格納します。

    設定値をデータベースに格納します。

    setString(hh:mm:ss形式の文字列)

    設定値をデータベースに格納します。

    HiRDBのエラーを返します。

    HiRDBのエラーを返します。

    setString(yyyy-MM-DD形式の文字列)

    HiRDBのエラーを返します。

    設定値をデータベースに格納します。

    HiRDBのエラーを返します。

    setString(yyyy-MM-DD hh:mm:ss[.ffffff]形式の文字列)※4

    HiRDBのエラーを返します。

    HiRDBのエラーを返します。

    設定値をデータベースに格納します。

    注※1 Time Obj:java.sql.Timeオブジェクト「時:分:秒」の値を持つオブジェクト。

    注※2 Date Obj:java.sql.Dateオブジェクト「年−月−日」の値を持つオブジェクト。

    注※3 Timestamp Obj:java.sql.Timestampオブジェクト「年−月−日 時:分:秒.ナノ秒」の値を持つオブジェクト。

    注※4 [.ffffff]:HiRDBのTimestamp型の精度によって,小数点以下のけた数が変わります。

    • HiRDBを使用する場合でのsetXXXメソッド使用時のオーバーフローチェック

      XXXは,?パラメタの適切な型です。HiRDBには,値によってはオーバーフローが発生するデータ型が存在します。HiRDBのデータ型と,メソッドとの組み合わせによるオーバーフローの発生の有無について,次の表に示します。オーバーフロー発生時は例外を返します。

    表18‒79 HiRDBのデータ型とsetXXXメソッドの組み合わせによるオーバーフローの発生の有無

    setXXXメソッド

    HiRDBのデータ型

    SMALLINT

    INTEGER

    FLOAT

    REAL

    DECIMAL

    CHAR

    VARCHAR

    DATE

    TIME

    TIMESTAMP

    BINARY

    BLOB

    setByte

    ×

    setShort

    ×

    setInt

    ×

    ×

    setLong

    ×

    ×

    ×

    setFloat

    ×

    ×

    ×

    setDouble

    ×

    ×

    ×

    ×

    setBigDecimal

    ×

    ×

    ×

    setBoolean

    ×

    setString

    ×

    ×

    ×

    ×

    ×

    ×

    ×

    ×

    setBytes

    setDate

    ×

    setTime

    ×

    setTimestamp

    (凡例)

    ○:値にかかわらずオーバーフローしません。

    ×:値によってはオーバーフローする場合があります。

    −:この組み合わせでは使用できません。

    表18‒80 HiRDBのデータ型とsetObjectメソッドの組み合わせによるオーバーフローの発生の有無

    setObjectメソッド

    HiRDBのデータ型

    SMALLINT

    INTEGER

    FLOAT

    REAL

    DECIMAL

    CHAR

    VARCHAR

    DATE

    TIME

    TIMESTAMP

    BINARY

    BLOB

    Byte

    ×

    Short

    ×

    Integer

    ×

    ×

    Long

    ×

    ×

    ×

    Decimal

    ×

    ×

    ×

    Float

    ×

    ×

    ×

    Double

    ×

    ×

    ×

    ×

    Boolean

    ×

    String

    ×

    ×

    ×

    ×

    ×

    ×

    ×

    ×

    Date

    Time

    Timestamp

    byte[]

    BLOB

    CLOB

    Array

    Ref

    Struct

    (凡例)

    ○:値にかかわらずオーバーフローしません。

    ×:値によってはオーバーフローする場合があります。

    −:この組み合わせでは使用できません。

  • CommitまたはRollbackにわたってのSQLの前処理の保持機能

    DABroker LibraryはDBMSがHiRDBまたはORACLEの場合,SQLの前処理をCommitまたはRollbackにわたって保持します。このため,HiRDBの場合,SELECT,INSERT,DELETE,UPDATE,PURGEおよびCALLのどれかでアクセスする次のスキーマ資源に対して,ほかのユーザが定義系SQL文を発行すると,スキーマ資源にアクセスしていたコネクションをDISCONNECTするまでの間,定義系SQLは排他待ちの状態になります。

    ・表

    ・ビュー

    ・ストアドプロシジャ

    ・ストアドファンクション

    ・抽象データ型

    参考

    XADataSourceを使用して,バージョンが07-01より前のHiRDBに接続した場合,この機能は有効になりません。バージョンが07-01以降のHiRDBに接続する場合に,この機能が有効になります。DABroker Libraryを使用したデータベース接続の実装については,「18.7 DABroker Libraryを使用したデータベース接続の実装」を参照してください。

    Component Containerでコネクションをプーリングしている場合,定義系SQLを発行する前に次のコマンドを実行してください。Component Containerのcjclearpoolコマンドを実行することで,コネクションプールからコネクションを破棄できます。

    cjclearpool <サーバ名称> -mode normal -resall

    この場合,<サーバ名称>で指定したJ2EEサーバまたはバッチサーバに接続しているすべてのデータソースについてコネクションが削除されます。J2EEアプリケーションまたはバッチアプリケーションでコネクションをクローズしたときに,物理コネクションもクローズされます。

    cjclearpoolコマンドについては,マニュアル「アプリケーションサーバ リファレンス コマンド編」の「cjclearpool(コネクションプール内のコネクション削除)」を参照してください。

制限事項

DABroker Libraryで使用するPreparedStatementクラスの制限事項を,次に示します。

表18‒81 PreparedStatementクラスの制限事項

メソッド名

制限事項

JDBC1.0での制限

JDBC2.0での制限

setArray

SQL配列型をサポートしていないため,無条件にSQLExceptionをスローします。

setBlob

接続データベースがOracle9i,またはOracle10g以外の場合,SQL BLOB型をサポートしていないため,無条件にSQLExceptionをスローします。

setClob

接続データベースがOracle9i,またはOracle10g以外の場合,SQL CLOB型をサポートしていないため,無条件にSQLExceptionをスローします。

setNull

ユーザ定義型をサポートしていないため,無条件にSQLExceptionをスローします。

setRef

SQL構造化型をサポートしていないため,無条件にSQLExceptionをスローします。

(凡例)

○:該当します。

−:該当しません。

DABroker Library提供メソッド

PreparedStatementクラスで提供している,DABroker Libraryだけの機能を次に示します。

メソッド一覧

メソッド名

機能

getBlockUpdateメソッド

接続データベースがHiRDBの場合,?パラメタを使用したデータベースの更新で,複数のパラメタセットを一度に処理するかどうかの設定情報を取得します。

setBlockUpdateメソッド

接続データベースがHiRDBの場合,?パラメタを使用したデータベースの更新で,複数のパラメタセットを一度に処理するかどうかを設定します。

〈この節の構成〉