パッケージ org.opengion.hayabusa.db

# クラス AbstractQuery

java.lang.Object
org.opengion.hayabusa.db.AbstractQuery

すべての実装されたインタフェース:
  `Query`

直系の既知のサブクラス:
  `Query_JDBC`, `Query_JDBCArrayCallable`, `Query_JDBCCallable`, `Query_JDBCErrMsg`, `Query_JDBCKeyEntry`, `Query_JDBCPLSQL`, `Query_JDBCPrepared`, `Query_JDBCTableMerge`, `Query_JDBCTableUpdate`, `Query_JDBCUpdate`

public class AbstractQuery extends Object implements Query
Query インターフェースを継承した Query の実装クラスです。 クエリークラスにステートメントを与えて execute()することにより内部に DBTableModel を 作成します。 このクラスは、Abstract クラスのため、実装は個々のサブクラスで行います。 唯一実装する必要があるのは, execute() メソッドだけです。

機能分類
  ＤＢ検索, ＤＢ登録
導入されたバージョン:
  JDK5.0,

- ## フィールドの概要

  フィールド
  修飾子とタイプ
  フィールド
  説明
  `static final String`
  `ARG_ARRAY`
  内部オブジェクトタイプ名 "ARG_ARRAY"
  `protected static final int`
  `BUFFER_MIDDLE`
  StringBilderなどの初期値を設定します。
  `protected static final String`
  `CR`
  システムの改行コードを設定します。
  `protected static final int`
  `DB_FETCH_SIZE`
  6.9.3.0 (2018/03/26) データ検索時のフェッチサイズ 251
  `protected static final int`
  `DB_MAX_QUERY_TIMEOUT`
  データ検索時の最大処理制限時間
  `static final String`
  `ERR_MSG`
  内部オブジェクトタイプ名 "ERR_MSG"
  `static final String`
  `ERR_MSG_ARRAY`
  内部オブジェクトタイプ名 "ERR_MSG_ARRAY"
  `static final String`
  `SYSARG_ARRAY`
  内部オブジェクトタイプ名 "SYSARG_ARRAY"

- ## コンストラクタの概要

  コンストラクタ
  修飾子
  コンストラクタ
  説明
  `protected`
  `AbstractQuery()`
  デフォルトコンストラクター

- ## メソッドの概要

  修飾子とタイプ
  メソッド
  説明
  `protected void`
  `createTableModel(ResultSet resultSet)`
  ResultSet を DBTableModelに割り当てます。
  `void`
  `execute(int[] rowNo, DBTableModel table)`
  引数配列付のクエリーを実行します。
  `void`
  `execute(String... args)`
  引数配列付のクエリーを実行します。
  `void`
  `execute(String[] keys, String... args)`
  引数配列付のクエリーを実行します。
  `void`
  `execute(String names, String dbArrayType, DBSysArg[] sysArg, DBUserArg[] userArg)`
  引数配列付のクエリーを実行します。
  `protected Connection`
  `getConnection()`
  ConnectionFactory.connection( String ); を利用して,Connection オブジェクトを取り出します。
  `DBTableModel`
  `getDBTableModel()`
  実行結果の DBTableModel を返します。
  `protected DBEditConfig`
  `getEditConfig()`
  編集設定オブジェクトを取得します。
  `int`
  `getErrorCode()`
  エラーコード を取得します。
  `ErrorMessage`
  `getErrorMessage()`
  エラーメッセージオブジェクト を取得します。
  `int`
  `getExecuteCount()`
  クエリーの実行結果を返します。
  `int`
  `getMaxRowCount()`
  データベースの最大検索件数を返します。
  `String[]`
  `getMergeStatement()`
  ステートメント文字列(UPDATE,INSERT,SELECT)を取り出します。
  `int`
  `getSkipRowCount()`
  データベースの検索スキップ件数を返します。
  `String`
  `getStatement()`
  ステートメント文字列を取り出します。
  `boolean`
  `isUpdate()`
  アップデートフラグを取得します。
  `void`
  `setConnection(Connection conn)`
  Connectionオブジェクトを外部から設定します。
  `protected void`
  `setDBTableModel(DBTableModel table)`
  DBTableModel をセットします。
  `void`
  `setEditConfig(DBEditConfig config)`
  編集設定オブジェクトをセットします。
  `protected void`
  `setErrorCode(int cd)`
  エラーコード をセットします。
  `protected void`
  `setErrorMessage(ErrorMessage em)`
  エラーメッセージオブジェクト をセットします。
  `protected void`
  `setExecuteCount(int executeCount)`
  クエリーの実行結果件数をセットします。
  `void`
  `setMaxRowCount(int maxRowCount)`
  データベースの最大検索件数をセットします。
  `void`
  `setMergeStatement(String update, String insert, String select)`
  ステートメント文字列(UPDATE,INSERT)をセットします。
  `void`
  `setResourceManager(ResourceManager resource)`
  リソースマネージャーをセットします。
  `void`
  `setSkipRowCount(int skipRowCount)`
  データベースの検索スキップ件数をセットします。
  `void`
  `setStatement(String stmt)`
  ステートメント文字列をセットします。
  `protected void`
  `setUpdateFlag(boolean up)`
  アップデートフラグをセットします。
  `String`
  `toString()`
  オブジェクトの識別子として，最後のクエリーを返します。
  `protected boolean`
  `useParameterMetaData()`
  この接続が、PreparedStatement#getParameterMetaData() を使用するかどうかを判定します。

  ### クラスから継承されたメソッド java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## フィールド詳細

  - ### CR

    protected static final String CR
    システムの改行コードを設定します。

  - ### BUFFER_MIDDLE

    protected static final int BUFFER_MIDDLE
    StringBilderなどの初期値を設定します。 200
    関連項目:
      - 定数フィールド値

  - ### DB_MAX_QUERY_TIMEOUT

    protected static final int DB_MAX_QUERY_TIMEOUT
    データ検索時の最大処理制限時間

  - ### DB_FETCH_SIZE

    protected static final int DB_FETCH_SIZE
    6.9.3.0 (2018/03/26) データ検索時のフェッチサイズ 251
    関連項目:
      - 定数フィールド値

  - ### ARG_ARRAY

    public static final String ARG_ARRAY
    内部オブジェクトタイプ名 "ARG_ARRAY"
    関連項目:
      - 定数フィールド値

  - ### SYSARG_ARRAY

    public static final String SYSARG_ARRAY
    内部オブジェクトタイプ名 "SYSARG_ARRAY"
    関連項目:
      - 定数フィールド値

  - ### ERR_MSG

    public static final String ERR_MSG
    内部オブジェクトタイプ名 "ERR_MSG"
    関連項目:
      - 定数フィールド値

  - ### ERR_MSG_ARRAY

    public static final String ERR_MSG_ARRAY
    内部オブジェクトタイプ名 "ERR_MSG_ARRAY"
    関連項目:
      - 定数フィールド値

- ## コンストラクタの詳細

  - ### AbstractQuery

    protected AbstractQuery()
    デフォルトコンストラクター
    変更履歴:
      6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.

- ## メソッドの詳細

  - ### setConnection

    public void setConnection(Connection conn)
    Connectionオブジェクトを外部から設定します。 通常は、Transaction と 接続先(DBID) を使用して作成した Connection を渡します。 このクラスでは、Connection の close() や、ConnectionFactory への返却なども 行いません。それらは、外部処理(通常は、Transactionオブジェクト)で行います。 Connection には、null は登録できません。
    定義:
      `setConnection` インタフェース内 `Query`
    パラメータ:
      `conn` - Connectionオブジェクト
    変更履歴:
      6.3.6.1 (2015/08/28) 新規追加

  - ### setStatement

    public void setStatement(String stmt)
    ステートメント文字列をセットします。
    定義:
      `setStatement` インタフェース内 `Query`
    パラメータ:
      `stmt` - ステートメント文字列
    変更履歴:
      3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。

  - ### getStatement

    public String getStatement()
    ステートメント文字列を取り出します。
    定義:
      `getStatement` インタフェース内 `Query`
    戻り値:
      ステートメント文字列

  - ### setMergeStatement

    public void setMergeStatement(String update, String insert, String select)
    ステートメント文字列(UPDATE,INSERT)をセットします。
    定義:
      `setMergeStatement` インタフェース内 `Query`
    パラメータ:
      `update` - UPDATEステートメント文字列
      `insert` - INSERTステートメント文字列
      `select` - SELECTステートメント文字列(あれば何もしない、なければINSERT処理の判定用)
    変更履歴:
      7.2.9.1 (2020/10/23) TableUpdateParamTag のマージ(UPDATE,INSERT)対応, 7.4.1.0 (2021/04/23) sqlType="MERGE" 時のみ有効で、where 条件で存在すれば何もしない

  - ### getMergeStatement

    public String[] getMergeStatement()
    ステートメント文字列(UPDATE,INSERT,SELECT)を取り出します。
    定義:
      `getMergeStatement` インタフェース内 `Query`
    戻り値:
      ステートメント文字列の配列(UPDATE,INSERTの順番)
    変更履歴:
      7.2.9.1 (2020/10/23) TableUpdateParamTag のマージ(UPDATE,INSERT)対応, 7.2.9.3 (2020/11/06) 早い段階でエラーにしておきます。, 7.4.1.0 (2021/04/23) sqlType="MERGE" 時のみ有効で、where 条件で存在すれば何もしない

  - ### execute

    public void execute(String... args)
    引数配列付のクエリーを実行します。 処理自体は, #execute() と同様に、各サブクラスの実装に依存します。 これは、PreparedQuery で使用する引数を配列でセットするものです。 select * from emp where deptno = ? and job = ? などの PreparedQuery や { call xxxx( ?,?,? ) } などの CallableStatement の ? 部分の引数を 順番にセットしていきます。 ※ このクラスでは実装されていません。
    定義:
      `execute` インタフェース内 `Query`
    パラメータ:
      `args` - オブジェクトの引数配列(可変長引数)
    変更履歴:
      6.1.1.0 (2015/01/17) 引数配列を可変引数にして、execute() を含めて定義します。

  - ### execute

    public void execute(String[] keys, String... args)
    引数配列付のクエリーを実行します。 処理自体は, #execute() と同様に、各サブクラスの実装に依存します。 これは、PreparedQuery で使用する引数を配列でセットするものです。 select * from emp where deptno = ? and job = ? などの PreparedQuery の ? 部分の引数を 順番にセットしていきます。 ※ このクラスでは実装されていません。
    定義:
      `execute` インタフェース内 `Query`
    パラメータ:
      `keys` - オブジェクトのキー配列
      `args` - オブジェクトの引数配列(可変長引数)
    変更履歴:
      4.0.0.0 (2005/01/31) 新規追加

  - ### execute

    public void execute(String names, String dbArrayType, DBSysArg[] sysArg, DBUserArg[] userArg)
    引数配列付のクエリーを実行します。 処理自体は, #execute() と同様に、各サブクラスの実装に依存します。 これは、PreparedQuery で使用する引数を配列でセットするものです。 select * from emp where deptno = ? and job = ? などの PreparedQuery の ? 部分の引数を 順番にセットしていきます。 ※ このクラスでは実装されていません。
    定義:
      `execute` インタフェース内 `Query`
    パラメータ:
      `names` - カラム名(CSV形式)
      `dbArrayType` - アレイタイプ名称
      `sysArg` - DBSysArg配列
      `userArg` - DBUserArg配列
    変更履歴:
      4.0.0.0 (2005/01/31) 引数をすべて受け取って実行するメソッドを標準メソッドとして追加

  - ### execute

    public void execute(int[] rowNo, DBTableModel table)
    引数配列付のクエリーを実行します。 処理自体は, #execute() と同様に、各サブクラスの実装に依存します。 これは、PreparedQuery で使用する引数を配列でセットするものです。 select * from emp where deptno = ? and job = ? などの PreparedQuery の [カラム名] 部分の引数を、DBTableModelから順番にセットしていきます。 ※ このクラスでは実装されていません。
    定義:
      `execute` インタフェース内 `Query`
    パラメータ:
      `rowNo` - 選択された行番号配列(登録する対象行)
      `table` - DBTableModelオブジェクト(登録する元データ)

  - ### setExecuteCount

    protected void setExecuteCount(int executeCount)
    クエリーの実行結果件数をセットします。 初期値は -1 です。(クエリーが失敗した場合や,CallableStatement の呼び出し等で 実行件数が明確でない場合の戻り値)。
    パラメータ:
      `executeCount` - 実行結果件数
    変更履歴:
      3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。

  - ### getExecuteCount

    public int getExecuteCount()
    クエリーの実行結果を返します。 クエリーが失敗した場合や,CallableStatement の呼び出し等で実行件数が明確でない 場合は, -1 が返されます。
    定義:
      `getExecuteCount` インタフェース内 `Query`
    戻り値:
      実行結果件数

  - ### setDBTableModel

    protected void setDBTableModel(DBTableModel table)
    DBTableModel をセットします。 なお、検索系実行前に setDBTableModel() でテーブルをセットしていたとしても そのオブジェクトは破棄されて、新しい DBTableModel が生成されます。
    パラメータ:
      `table` - DBTableModelオブジェクト
    変更履歴:
      3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。

  - ### getDBTableModel

    public DBTableModel getDBTableModel()
    実行結果の DBTableModel を返します。
    定義:
      `getDBTableModel` インタフェース内 `Query`
    戻り値:
      DBTableModelオブジェクト

  - ### getMaxRowCount

    public int getMaxRowCount()
    データベースの最大検索件数を返します。 (初期値:DB_MAX_ROW_COUNT[=])。 データベース自体の検索は,指定されたSQLの全件を検索しますが, DBTableModelのデータとして登録する最大件数をこの値に設定します。0は無制限です。 サーバーのメモリ資源と応答時間の確保の為です。
    定義:
      `getMaxRowCount` インタフェース内 `Query`
    戻り値:
      最大検索件数

  - ### setMaxRowCount

    public void setMaxRowCount(int maxRowCount)
    データベースの最大検索件数をセットします。 データベース自体の検索は,指定されたSQLの全件を検索しますが, DBTableModelのデータとして登録する最大件数をこの値に設定します。 サーバーのメモリ資源と応答時間の確保の為です。 ゼロ、または、負の値を設定すると、無制限(Integer.MAX_VALUE)になります。
    定義:
      `setMaxRowCount` インタフェース内 `Query`
    パラメータ:
      `maxRowCount` - 最大検索件数
    変更履歴:
      3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。, 4.0.0.0 (2005/08/31) ゼロ、または、負の値は、無制限(Integer.MAX_VALUE)にする。

  - ### getSkipRowCount

    public int getSkipRowCount()
    データベースの検索スキップ件数を返します。 データベース自体の検索は,指定されたSQLの全件を検索しますが, DBTableModelのデータとしては、スキップ件数分は登録されません。 サーバーのメモリ資源と応答時間の確保の為です。
    定義:
      `getSkipRowCount` インタフェース内 `Query`
    戻り値:
      最大検索件数

  - ### setSkipRowCount

    public void setSkipRowCount(int skipRowCount)
    データベースの検索スキップ件数をセットします。 データベース自体の検索は,指定されたSQLの全件を検索しますが, DBTableModelのデータとしては、スキップ件数分は登録されません。 サーバーのメモリ資源と応答時間の確保の為です。
    定義:
      `setSkipRowCount` インタフェース内 `Query`
    パラメータ:
      `skipRowCount` - スキップ件数
    変更履歴:
      3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。

  - ### setUpdateFlag

    protected void setUpdateFlag(boolean up)
    アップデートフラグをセットします。 これは、Query で更新処理の SQL 文を実行したときにセットされます。 更新処理が実行：true / 検索処理のみ：false をセットします。 このメソッドを呼び出さない場合は、デフォルト：true です。
    パラメータ:
      `up` - アップデートされたかどうか[true:更新処理/false:検索処理]
    変更履歴:
      2.1.2.3 (2002/12/02) データベース更新時に、更新フラグをセットするように変更, 3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。

  - ### isUpdate

    public boolean isUpdate()
    アップデートフラグを取得します。 これは、Query で更新処理の SQL 文を実行したときに true にセットされます。 更新処理が実行：true / 検索処理のみ：false を取得できます。
    定義:
      `isUpdate` インタフェース内 `Query`
    戻り値:
      アップデートされたかどうか[true:更新処理/false:検索処理]
    変更履歴:
      2.1.2.3 (2002/12/02) データベース更新時に、更新フラグをセットするように変更, 4.0.0.0 (2007/07/20) メソッド名変更( getUpdateFlag() ⇒ isUpdate() )

  - ### setResourceManager

    public void setResourceManager(ResourceManager resource)
    リソースマネージャーをセットします。 これは、言語(ロケール)に応じた DBColumn をあらかじめ設定しておく為に 必要です。 リソースマネージャーが設定されていない、または、所定のキーの DBColumn が リソースに存在しない場合は、内部で DBColumn オブジェクトを作成します。
    定義:
      `setResourceManager` インタフェース内 `Query`
    パラメータ:
      `resource` - リソースマネージャー
    変更履歴:
      4.0.0.0 (2005/01/31) lang ⇒ ResourceManager へ変更

  - ### getErrorCode

    public int getErrorCode()
    エラーコード を取得します。 エラーコード は、ErrorMessage クラスで規定されているコードです。
    定義:
      `getErrorCode` インタフェース内 `Query`
    戻り値:
      エラーコード

  - ### setErrorCode

    protected void setErrorCode(int cd)
    エラーコード をセットします。 エラーコード は、ErrorMessage クラスで規定されているコードです。
    パラメータ:
      `cd` - エラーコード

  - ### getErrorMessage

    public ErrorMessage getErrorMessage()
    エラーメッセージオブジェクト を取得します。
    定義:
      `getErrorMessage` インタフェース内 `Query`
    戻り値:
      エラーメッセージオブジェクト

  - ### setErrorMessage

    protected void setErrorMessage(ErrorMessage em)
    エラーメッセージオブジェクト をセットします。
    パラメータ:
      `em` - エラーメッセージオブジェクト

  - ### setEditConfig

    public void setEditConfig(DBEditConfig config)
    編集設定オブジェクトをセットします。
    定義:
      `setEditConfig` インタフェース内 `Query`
    パラメータ:
      `config` - 編集設定オブジェクト
    変更履歴:
      5.3.6.0 (2011/06/01) 新規追加

  - ### getEditConfig

    protected DBEditConfig getEditConfig()
    編集設定オブジェクトを取得します。
    戻り値:
      編集設定オブジェクト
    変更履歴:
      5.3.6.0 (2011/06/01) 新規追加

  - ### createTableModel

    protected void createTableModel(ResultSet resultSet)
    ResultSet を DBTableModelに割り当てます。 毎回,検索毎に,DBTableModel にコピーするイメージです。 ResulSet 以外のオブジェクトから，DBTableModelを作成する場合は, このメソッドをオーバーライドします。 このメソッドは， execute からのみ,呼び出されます。 それ以外からは呼出し出来ません。
    パラメータ:
      `resultSet` - ResultSetオブジェクト
    変更履歴:
      3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。, 3.3.3.3 (2003/08/06) カラムのラベル名を、大文字に変換する。, 3.8.5.0 (2006/03/02) CLOB カラムかどうかを判定しCLOBの場合は、Clob オブジェクトから文字列を取り出します。, 3.8.8.8 (2007/05/11) ROWID対応(小数点対応 "0.3" が ".3" と表示される対策), 4.0.0.0 (2006/01/31) CLOB カラムかどうかを判定しCLOBの場合は、ストリームから値を取り出します。, 5.3.6.0 (2011/06/01) DBTableModel作成処理をDBTableModelUtilに移動＆集計機能対応, 6.3.6.1 (2015/08/28) close(),realClose() 廃止。Queryはキャッシュしません。

  - ### getConnection

    protected Connection getConnection()
    ConnectionFactory.connection( String ); を利用して,Connection オブジェクトを取り出します。 コネクションプールが一杯の場合は、即エラーになります。
    戻り値:
      コネクション
    変更履歴:
      3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。, 3.8.7.0 (2006/12/15) アクセスログ取得の為,ApplicationInfoオブジェクトを設定, 5.1.9.0 (2010/08/01) transaction 属性追加。, 6.3.6.1 (2015/08/28) transaction 属性廃止。内部のConnectionを返します。

  - ### useParameterMetaData

    protected boolean useParameterMetaData()
    この接続が、PreparedStatement#getParameterMetaData() を使用するかどうかを判定します。 ConnectionFactory#useParameterMetaData(String) の結果を返します。(postgreSQL対応) ※ 暫定処理です。もっと、良い方法を考える必要があります。
    戻り値:
      使用する場合：true / その他:false
    関連項目:
      - `ConnectionFactory.useParameterMetaData(String)`
    変更履歴:
      5.3.8.0 (2011/08/01) 新規追加, 6.3.6.1 (2015/08/28) 内部変数にconnIDが無くなったため、直接所得することになりました。, 6.4.2.0 (2016/01/29) ex.printStackTrace() を、ThrowUtil#ogStackTrace(Throwable) に置き換え。

  - ### toString

    public String toString()
    オブジェクトの識別子として，最後のクエリーを返します。
    オーバーライド:
      `toString` クラス内 `Object`
    戻り値:
      最後のクエリー
    このﾒｿｯﾄﾞは、nullを返しません