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のエラーを返します。
設定値をデータベースに格納します。
表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だけの機能を次に示します。
- メソッド一覧
-
メソッド名
機能
接続データベースがHiRDBの場合,?パラメタを使用したデータベースの更新で,複数のパラメタセットを一度に処理するかどうかの設定情報を取得します。
接続データベースがHiRDBの場合,?パラメタを使用したデータベースの更新で,複数のパラメタセットを一度に処理するかどうかを設定します。
- 〈この節の構成〉