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

## クラス DBSimpleTable

- java.lang.Object
- - org.opengion.fukurou.db.DBSimpleTable

-     public class DBSimpleTable
      extends Object

  DBTableModel インターフェースを継承した TableModel の実装クラスです。 sql文を execute( query ) する事により,データベースを検索した結果を DBTableModel に割り当てます。 メソッドを宣言しています DBTableModel インターフェースは，データベースの検索結果(Resultset)をラップする インターフェースとして使用して下さい。
  変更履歴:
    5.2.2.0 (2010/11/01) パッケージ移動(hayabusa.db ⇒ fukurou.db)
  機能分類
    ＤＢ/Shell制御
  バージョン
    4.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

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

    コンストラクタ
    コンストラクタ | 説明
    --- | ---
    `DBSimpleTable​(String[] nm)` | データ配列のカラム名称配列を指定してオブジェクトを構築します。

  - ### メソッドの概要

    すべてのメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッド | 説明
    --- | --- | ---
    `void` | `addConstrain​(String key, String val)` | Insert/Update/Delete 時の PreparedStatement の引数(クエスチョンマーク)制約。
    `int` | `close​(boolean commitFlag)` | DB処理をクロースします。
    `int` | `execute​(String... values)` | データ配列を渡して実際のDB処理を実行します。
    `void` | `setApplicationInfo​(ApplicationInfo appInfo)` | アクセスログ取得の為,ApplicationInfoオブジェクトを設定します。
    `void` | `setConnectionID​(String conn)` | データベースの接続先IDを設定します。
    `void` | `setKeys​(String... key)` | 登録に使用するカラムキー配列(keys)を登録します。
    `void` | `setTable​(String tbl)` | Insert/Update/Delete 時の登録するテーブル名。
    `void` | `setWhere​(String wh)` | Update/Delete 時のキーとなるWHERE 条件のカラム名を設定します。
    `void` | `startDelete()` | Delete 処理の開始を宣言します。
    `void` | `startInsert()` | Insert 処理の開始を宣言します。
    `void` | `startUpdate()` | Update 処理の開始を宣言します。

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

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

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

    - #### DBSimpleTable

          public DBSimpleTable​(String[] nm)

      データ配列のカラム名称配列を指定してオブジェクトを構築します。
      パラメータ:
        `nm` - カラム名称配列
      例外:
        `RuntimeException` - tbl が null の場合

  - ### メソッドの詳細

    - #### setKeys

          public void setKeys​(String... key)

      登録に使用するカラムキー配列(keys)を登録します。 引数のkey配列が null の場合は、names と同じカラム名称配列(names)が使用されます。 キー配列(keys)は、一度しか登録できません。また、addConstrain等のメソッド 呼び出しを先に実行すると、カラム名称配列(names)が設定されてしまう為、 その後にこのメソッドを呼び出すとエラーが発生します。
      パラメータ:
        `key` - 登録カラム名称配列(可変長引数)
      例外:
        `RuntimeException` - すでに キー配列(keys)が登録済み/作成済みの場合
      関連項目:
        `addConstrain( String ,String )`

    - #### setTable

          public void setTable​(String tbl)

      Insert/Update/Delete 時の登録するテーブル名。
      パラメータ:
        `tbl` - テーブル名
      例外:
        `RuntimeException` - tbl が null の場合

    - #### setConnectionID

          public void setConnectionID​(String conn)

      データベースの接続先IDを設定します。
      パラメータ:
        `conn` - 接続先ID

    - #### setApplicationInfo

          public void setApplicationInfo​(ApplicationInfo appInfo)

      アクセスログ取得の為,ApplicationInfoオブジェクトを設定します。
      パラメータ:
        `appInfo` - アプリ情報オブジェクト
      変更履歴:
        3.8.7.0 (2006/12/15) 新規追加

    - #### addConstrain

          public void addConstrain​(String key,
                                   String val)

      Insert/Update/Delete 時の PreparedStatement の引数(クエスチョンマーク)制約。 制約条件(val)は、そのまま引数に使用されます。通常、？ で表される パラメータに、文字長を制限する場合、SUBSTRB( ？,1,100 ) という val 変数を与えます。 また、キー一つに対して、値を複数登録したい場合にも、使用できます。 例えば、NVAL( ？,？ ) のような場合、キー一つに値２つを割り当てます。 値配列の並び順は、キー配列(keys)に対する(？の個数)に対応します。 注意：カラム名称配列(names)ではありません。また、先にキー配列(keys)を登録 しておかないと、キー配列登録時にエラーが発生します。 制約条件は、処理するQUERYに対して適用されますので、 key または、val が null の場合は、RuntimeException を Throwします。
      パラメータ:
        `key` - 制約をかけるキー
        `val` - 制約条件式
      例外:
        `RuntimeException` - key または、val が null の場合
      関連項目:
        `setKeys( String[] )`

    - #### setWhere

          public void setWhere​(String wh)

      Update/Delete 時のキーとなるWHERE 条件のカラム名を設定します。 通常の WHERE 句の書き方と同じで、カラム配列(names)に対応する設定値(values)の値を 割り当てたい箇所に[カラム名] を記述します。文字列の場合、設定値をセットする ときに、シングルコーテーションを使用しますが、[カラム名]で指定する場合は、 その前後に、(')シングルコーテーションは、不要です。 WHERE条件は、登録に使用するキー配列(keys)に現れない条件で行を特定することがありますので カラム名称配列(names)を元にカラム名のアドレスを求めます。 [カラム名]は、? に置き換えて、PreparedStatement として、実行される形式に変換されます。 例：FGJ='1' and CLM=[CLM] and SYSTEM_ID in ([SYSID],'**')
      パラメータ:
        `wh` - WHERE条件のカラム名
      例外:
        `RuntimeException` - [カラム名]がカラム配列(names)に存在しない場合
      変更履歴:
        4.3.4.0 (2008/12/01) キー配列(keys)が未設定(null)の場合は、カラム名称配列(names)を割り当てる, 5.0.2.0 (2009/11/01) バグ修正(keysはデータセットのキーなので、where句のカラムに含まれて入いるわけではない), 6.4.1.2 (2016/01/22) PMD refactoring. where は、null をセットするのではなく、useWhere の設定で判定する。, 6.4.3.4 (2016/03/11) Formatterに新しいコンストラクターを追加する。, 6.9.5.0 (2018/04/23) カラム名が存在しない場合に、Exception を throw するかどうかを指定可能にする。

    - #### startInsert

          public void startInsert()
                           throws SQLException

      Insert 処理の開始を宣言します。 内部的に、コネクションを接続して、PreparedStatementオブジェクトを作成します。 このメソッドと、close() メソッドは必ずセットで処理してください。
      例外:
        `SQLException` - Connection のオープンに失敗した場合
      変更履歴:
        3.8.7.0 (2006/12/15) アクセスログ取得の為,ApplicationInfoオブジェクトを設定, 5.1.2.0 (2010/01/01) setObject に ParameterMetaData の getParameterType を渡す。(PostgreSQL対応), 5.3.8.0 (2011/08/01) useParamMetaData を ConnectionFactory経由で取得。(PostgreSQL対応)

    - #### startUpdate

          public void startUpdate()
                           throws SQLException

      Update 処理の開始を宣言します。 内部的に、コネクションを接続して、PreparedStatementオブジェクトを作成します。 このメソッドと、close() メソッドは必ずセットで処理してください。
      例外:
        `SQLException` - Connection のオープンに失敗した場合
      変更履歴:
        3.8.7.0 (2006/12/15) アクセスログ取得の為,ApplicationInfoオブジェクトを設定, 5.1.2.0 (2010/01/01) setObject に ParameterMetaData の getParameterType を渡す。(PostgreSQL対応), 5.3.8.0 (2011/08/01) useParamMetaData を ConnectionFactory経由で取得。(PostgreSQL対応)

    - #### startDelete

          public void startDelete()
                           throws SQLException

      Delete 処理の開始を宣言します。 内部的に、コネクションを接続して、PreparedStatementオブジェクトを作成します。 このメソッドと、close() メソッドは必ずセットで処理してください。
      例外:
        `SQLException` - Connection のオープンに失敗した場合
      変更履歴:
        3.8.7.0 (2006/12/15) アクセスログ取得の為,ApplicationInfoオブジェクトを設定, 5.1.2.0 (2010/01/01) setObject に ParameterMetaData の getParameterType を渡す。(PostgreSQL対応), 5.3.8.0 (2011/08/01) useParamMetaData を ConnectionFactory経由で取得。(PostgreSQL対応)

    - #### execute

          public int execute​(String... values)
                      throws SQLException

      データ配列を渡して実際のDB処理を実行します。 この処理の前に、startXXXX をコールしておき、INSER,UPDATE,DELETEのどの 処理を行うか、宣言しておく必要があります。 戻り値は、この処理での処理件数です。 最終件数は、close( boolean ) 時に取得します。
      パラメータ:
        `values` - カラム配列(names)に対応する設定値配列(可変長引数)
      戻り値:
        ここでの処理件数
      例外:
        `SQLException` - Connection のクロースに失敗した場合
        `RuntimeException` - Connection DB処理の実行に失敗した場合
      関連項目:
        `close( boolean )`
      変更履歴:
        4.0.0.0 (2007/11/28) SQLException をきちんと伝播させます。, 5.1.2.0 (2010/01/01) setObject に ParameterMetaData の getParameterType を渡す。(PostgreSQL対応), 5.3.8.0 (2011/08/01) useParamMetaData 時の setNull 対応(PostgreSQL対応)

    - #### close

          public int close​(boolean commitFlag)

      DB処理をクロースします。 引数には、commit させる場合は、true を、rollback させる場合は、false をセットします。 戻り値は、今まで処理された合計データ件数です。 この処理は、SQLException を内部で RuntimeException に変換している為、catch 節は 不要ですが、必ず finally 節で呼び出してください。そうしないと、リソースリークの 原因になります。
      パラメータ:
        `commitFlag` - コミットフラグ [true:commitする/false:rollbacする]
      戻り値:
        今までの合計処理件数
      変更履歴:
        5.1.2.0 (2010/01/01) pMeta のクリア