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

[目次][用語][索引][前へ][次へ]

4.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の返す値となります。

    表4-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のデータ型と,メソッドとの組み合わせによるオーバーフローの発生の有無について,次の表に示します。オーバーフロー発生時は例外を返します。

    表4-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

    (凡例)
    ○:値にかかわらずオーバーフローしません。
    ×:値によってはオーバーフローする場合があります。
    −:この組み合わせでは使用できません。

    表4-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を使用したデータベース接続の実装については,「4.7 DABroker Libraryを使用したデータベース接続の実装」を参照してください。
    Component Containerでコネクションをプーリングしている場合,定義系SQLを発行する前に次のコマンドを実行してください。Component Containerのcjclearpoolコマンドを実行することで,コネクションプールからコネクションを破棄できます。
    cjclearpool <サーバ名称> -mode normal -resall
    この場合,<サーバ名称>で指定したJ2EEサーバまたはバッチサーバに接続しているすべてのデータソースについてコネクションが削除されます。J2EEアプリケーションまたはバッチアプリケーションでコネクションをクローズしたときに,物理コネクションもクローズされます。
    cjclearpoolコマンドについては,マニュアル「アプリケーションサーバ リファレンス コマンド編」の「cjclearpool(コネクションプール内のコネクション削除)」を参照してください。

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

表4-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の場合,?パラメタを使用したデータベースの更新で,複数のパラメタセットを一度に処理するかどうかを設定します。
 
<この節の構成>
getBlockUpdateメソッド
setBlockUpdateメソッド