クラス Query_JDBCPrepared
java.lang.Object
org.opengion.hayabusa.db.AbstractQuery
org.opengion.plugin.query.Query_JDBCPrepared
- すべての実装されたインタフェース:
Query
引数引き当て(PreparedStatement) を利用した登録系Queryです。
java.sql.PreparedStatement を用いて、データベース検索処理を行います。
引数に、指定した値を配列で渡します。
内部変数の受け渡しのデフォルト実装は、AbstractQuery クラスを継承している
ため、ここでは、execute() メソッドを実装しています。
このクラスでは、ステートメント文を execute() する事により、データベースを
検索した結果を DBTableModel に割り当てます。
このクラスは、Query で使用されるより、内部の DBTableModelUtilから、
利用されるケースが主です。
Query で使用する場合は、JDBCPrepared ではなく、JDBCTableUpdate を
使用することを、ご検討ください。
※postgres8.3以降では、数値型の列に対して、実行した場合は、型相違のエラーが発生します。
postgres8.3以降で利用する場合は、postgres側に暗黙の型変換(CAST)の実装を検討して下さい。
- 機能分類
- データ表示, データ編集
- 形式サンプル:
- 例: 可変引数付きのSQL文を実行します。 これは、INSERT,UPDATE,DELETE など、どのようなSQL文でも実行できます。 names 属性で指定するのは、DBTableModelのカラム名で、その値が順番に、 引数(?記号)の個所に設定されます。 選択されたデータ(行)の数だけ、繰り返し実行されます。 jsp/TYPE1A/copy.jsp <og:value scope="session" key="names" value="CLM,NAME_JA,LABEL_NAME,KBSAKU,SYSTEM_ID,LANG" /> <og:value scope="session" key="SQL" > INSERT INTO GEA08 (CLM,NAME_JA,LABEL_NAME,KBSAKU,SYSTEM_ID,LANG, FGJ,DYSET,DYUPD,USRSET,USRUPD,PGUPD) VALUES (?,?,?,?,?,?, '1','{@USER.YMDH}','{@USER.YMDH}','{@USER.ID}','{@USER.ID}','{@GUI.KEY}') </og:value> jsp/TYPE1A/entry.jsp <h:tableUpdate command = "{@command}" queryType = "JDBCPrepared" names = "{@names}" > {@SQL} </og:tableUpdate> <!-- 前画面で指定のSQL文を削除します。(scope="session"なので削除が必要。) --> <og:value scope="session" key="names" command="REMOVE" /> <og:value scope="session" key="SQL" command="REMOVE" /> 以下はSELECTで使用する場合の例 ※値はnamesに指定した値が、?に順番に設定されます。 (andタグのplaceHolder属性は、valueに指定した式を、実行する or 実行しないの判定に利用されます。) <og:query command="NEW" queryType="JDBCPrepared" names="NO,NAME,KBN"> SELECT NO,NAME,KBN FROM T01 <og:where> <og:and value="NO = ?" placeHolder="{@NO}" /> <og:and value="NAME LIKE ? || '%'" placeHolder="{@NAME}" /> <og:and value="KBN IN (?)" multi="true" placeHolder="{@KBN}"/> </og:where> </og:query>
- 導入されたバージョン:
- JDK5.0,
-
フィールドの概要
クラスから継承されたフィールド org.opengion.hayabusa.db.AbstractQuery
ARG_ARRAY, BUFFER_MIDDLE, CR, DB_FETCH_SIZE, DB_MAX_QUERY_TIMEOUT, ERR_MSG, ERR_MSG_ARRAY, SYSARG_ARRAY
-
コンストラクタの概要
コンストラクタ -
メソッドの概要
クラスから継承されたメソッド org.opengion.hayabusa.db.AbstractQuery
createTableModel, execute, execute, execute, execute, getConnection, getDBTableModel, getEditConfig, getErrorCode, getErrorMessage, getExecuteCount, getMaxRowCount, getMergeStatement, getSkipRowCount, getStatement, isUpdate, setConnection, setDBTableModel, setEditConfig, setErrorCode, setErrorMessage, setExecuteCount, setMaxRowCount, setMergeStatement, setResourceManager, setSkipRowCount, setStatement, setUpdateFlag, toString, useParameterMetaData
-
コンストラクタの詳細
-
Query_JDBCPrepared
public Query_JDBCPrepared()デフォルトコンストラクター- 変更履歴:
- 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
-
-
メソッドの詳細
-
execute
引数配列付のクエリーを実行します。 処理自体は、#execute() と同様に、各サブクラスの実装に依存します。 これは、PreparedQuery で使用する引数を配列でセットするものです。 select * from emp where deptno = ? and job = ? などの PreparedQuery の ? 部分の引数を 順番にセットしていきます。- 定義:
execute
インタフェース内Query
- オーバーライド:
execute
クラス内AbstractQuery
- パラメータ:
args
- オブジェクトの引数配列(可変長引数)- 変更履歴:
- 2.1.2.3 (2002/12/02) データベース更新時に、更新フラグをセットするように変更, 2.3.1.3 (2003/01/28) Open Cursor が、大量に残る件の対応。ResultSet を close(), 3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。, 3.3.3.1 (2003/07/18) DB登録時の後ろスペースを削除する。, 3.5.6.0 (2004/06/18) PreparedStatement をexecute 間で使いまわします。, 3.8.0.8 (2005/10/03) エラーメッセージの出力順をメッセージ+Queryに変更します。, 5.3.8.0 (2011/08/01) pstmt.setObject で、useParamMetaData の判定を避けるため、pstmt.setString で代用(PostgreSQL対応), 6.3.6.1 (2015/08/28) close(),realClose() 廃止。Queryはキャッシュしません。, 6.4.2.1 (2016/02/05) try-with-resources 文で記述。, 6.9.3.0 (2018/03/26) DB_FETCH_SIZE追加。
-