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

## クラス DBUtil

- java.lang.Object
- - org.opengion.fukurou.fileexec.DBUtil

-     public final class DBUtil
      extends Object

  データベース処理を行う、簡易的なユーティリティークラスです。 staticメソッドしか持っていません。 sql文を execute( query ) する事により,データベースに書き込みます。 このクラスは、マルチスレッドに対して、安全です。
  バージョン
    4.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

- - ### フィールドの概要

    フィールド
    修飾子とタイプ | フィールド | 説明
    --- | --- | ---
    `static int` | `CONN_RETRY_COUNT` | データベースリトライ回数 10
    `static int` | `CONN_SLEEP_TIME` | データベースリトライの待ち時間(ミリ秒) 2000
    `static int` | `CONN_VALID_TIMEOUT` | データベースValid タイムアウト時間(秒) 10
    `static String` | `DATABASE_KEY` | ﾃﾞｰﾀﾍﾞｰｽのｷｰﾜｰﾄﾞ "DATABASE"
    `static int` | `DB_FETCH_SIZE` | データ検索時のフェッチサイズ 251
    `static String` | `DRIVER_KEY` | ﾄﾞﾗｲﾊﾞｰ "REALM_DRIVER"
    `static String` | `NAME_KEY` | ﾕｰｻﾞｰID "REALM_NAME"
    `static String` | `PASSWORD_KEY` | ﾊﾟｽﾜｰﾄﾞ "REALM_PASSWORD"
    `static String` | `URL_KEY` | 接続先URL "REALM_URL"

  - ### メソッドの概要

    すべてのメソッド staticメソッド concreteメソッド
    修飾子とタイプ | メソッド | 説明
    --- | --- | ---
    `static List<String[]>` | `dbQuery​(String query, String... args)` | 検索するデータベースを指定して、Queryを実行します(Transaction 対応)。
    `static int` | `execute​(String query, String... values)` | データ配列を渡して実際のDB処理を実行します。
    `static int` | `execute​(String insQuery, String updQuery, List<String[]> insList, List<String[]> updList)` | データ配列のListを渡して実際のDB処理を実行します。
    `static int` | `execute​(String query, List<String[]> list)` | データ配列のListを渡して実際のDB処理を実行します。
    `static Connection` | `getConnection()` | DataSource から、Connectionを取得して、返します。
    `static String` | `getDeleteSQL​(String table, String where)` | データをデリートする場合に使用するSQL文を作成します。
    `static String` | `getInsertSQL​(String table, String[] keys, String[] conKeys, String[] conVals)` | データをインサートする場合に使用するSQL文を作成します。
    `static String` | `getUpdateSQL​(String table, String[] keys, String[] conKeys, String[] conVals, String where)` | データをアップデートする場合に使用するSQL文を作成します。
    `static void` | `init()` | 引数を指定せず、オブジェクトを作成します。
    `static void` | `init​(String... params)` | 接続先URL、ドライバー、ユーザーID、パスワードを指定して、オブジェクトを作成します。
    `static void` | `init​(Map<String,​String> prmMap)` | 接続先URL、ドライバー、ユーザーID、パスワードなどを含んだMapを指定して、オブジェクトを作成します。
    `static boolean` | `isOracle()` | 接続先がORACLEかどうかを返します。
    `static boolean` | `isReady()` | DataSourceの初期化が完了していれば、true を返します。
    `static List<String[]>` | `resultToArray​(ResultSet resultSet)` | ResultSet より、結果の文字列配列を作成します。

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

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

- - ### フィールドの詳細

    - #### DATABASE_KEY

          public static final String DATABASE_KEY

      ﾃﾞｰﾀﾍﾞｰｽのｷｰﾜｰﾄﾞ "DATABASE"
      関連項目:
        定数フィールド値

    - #### URL_KEY

          public static final String URL_KEY

      接続先URL "REALM_URL"
      関連項目:
        定数フィールド値

    - #### DRIVER_KEY

          public static final String DRIVER_KEY

      ﾄﾞﾗｲﾊﾞｰ "REALM_DRIVER"
      関連項目:
        定数フィールド値

    - #### NAME_KEY

          public static final String NAME_KEY

      ﾕｰｻﾞｰID "REALM_NAME"
      関連項目:
        定数フィールド値

    - #### PASSWORD_KEY

          public static final String PASSWORD_KEY

      ﾊﾟｽﾜｰﾄﾞ "REALM_PASSWORD"
      関連項目:
        定数フィールド値

    - #### CONN_SLEEP_TIME

          public static final int CONN_SLEEP_TIME

      データベースリトライの待ち時間(ミリ秒) 2000
      関連項目:
        定数フィールド値

    - #### CONN_RETRY_COUNT

          public static final int CONN_RETRY_COUNT

      データベースリトライ回数 10
      関連項目:
        定数フィールド値

    - #### CONN_VALID_TIMEOUT

          public static final int CONN_VALID_TIMEOUT

      データベースValid タイムアウト時間(秒) 10
      関連項目:
        定数フィールド値

    - #### DB_FETCH_SIZE

          public static final int DB_FETCH_SIZE

      データ検索時のフェッチサイズ 251
      関連項目:
        定数フィールド値

  - ### メソッドの詳細

    - #### init

          public static void init()

      引数を指定せず、オブジェクトを作成します。 System.getProperty より取得し、さらに、そこから取得できなかった 場合は、環境変数から、取得します。
      関連項目:
        `URL_KEY`
      変更履歴:
        7.2.3.1 (2020/04/17) System.getenv → HybsConst.getenv 変更(サービス化対応)

    - #### init

          public static void init​(Map<String,​String> prmMap)

      接続先URL、ドライバー、ユーザーID、パスワードなどを含んだMapを指定して、オブジェクトを作成します。 Mapに指定のキーが含まれない場合は、System.getProperty より取得し、さらに、そこから取得できなかった 場合は、環境変数から、取得します。
      パラメータ:
        `prmMap` - 必要情報を含んだMapオブジェクト
      関連項目:
        `URL_KEY`
      変更履歴:
        7.2.3.1 (2020/04/17) System.getenv → HybsConst.getenv 変更(サービス化対応)

    - #### init

          public static void init​(String... params)

      接続先URL、ドライバー、ユーザーID、パスワードを指定して、オブジェクトを作成します。 params は、必ず、４つ必要です。
      パラメータ:
        `params` - 接続先URL、ドライバー、ユーザーID、パスワード
      関連項目:
        `isReady()`

    - #### isReady

          public static boolean isReady()

      DataSourceの初期化が完了していれば、true を返します。 初期化は、#init(String...) メソッドの呼び出して、完了します。 #crear() で、未完了に戻ります。
      戻り値:
        初期化が完了しているかどうか
      関連項目:
        `init(String...)`

    - #### isOracle

          public static boolean isOracle()

      接続先がORACLEかどうかを返します。 ORACLE の場合は、true を返します。
      戻り値:
        接続先がORACLEかどうか[true:ORACLE false:その他]

    - #### getConnection

          public static Connection getConnection()
                                          throws SQLException

      DataSource から、Connectionを取得して、返します。
      戻り値:
        DataSourceから、Connectionを取得して、返します。
      例外:
        `SQLException` - SQLエラーが発生した場合
      変更履歴:
        6.8.2.2 (2017/11/02) コネクションの再取得をリトライします。, 7.2.5.0 (2020/06/01) DB処理の実行に失敗のエラーは、３回までは、何も出さない。

    - #### execute

          public static int execute​(String query,
                                    String... values)

      データ配列を渡して実際のDB処理を実行します。 ここでは、１行だけ処理するための簡易メソッドを提供します。
      パラメータ:
        `query` - 実行するSQL文
        `values` - ？に割り当てる設定値
      戻り値:
        ここでの処理件数
      例外:
        `RuntimeException` - Connection DB処理の実行に失敗した場合

    - #### execute

          public static int execute​(String query,
                                    List<String[]> list)

      データ配列のListを渡して実際のDB処理を実行します。 データ配列は、１行分のデータに対する設定値の配列です。 これは、keys で指定した並び順と一致している必要があります。
      パラメータ:
        `query` - 実行するSQL文
        `list` - ？に割り当てる設定値
      戻り値:
        ここでの処理件数
      例外:
        `RuntimeException` - Connection DB処理の実行に失敗した場合
      変更履歴:
        6.8.1.5 (2017/09/08) LOGGER.debug 情報の追加

    - #### execute

          public static int execute​(String insQuery,
                                    String updQuery,
                                    List<String[]> insList,
                                    List<String[]> updList)

      データ配列のListを渡して実際のDB処理を実行します。(暫定メソッド) これは、updQueryで、更新してみて、０件の場合、insQuery で追加処理を行います。 データ配列は、１行分のデータに対する設定値の配列です。 これは、keys で指定した並び順と一致している必要があります。
      パラメータ:
        `insQuery` - 追加するSQL文
        `updQuery` - 更新するSQL文
        `insList` - ？に割り当てる設定値
        `updList` - ？に割り当てる設定値
      戻り値:
        ここでの処理件数
      例外:
        `RuntimeException` - Connection DB処理の実行に失敗した場合
      変更履歴:
        6.8.1.5 (2017/09/08) LOGGER.debug 情報の追加

    - #### dbQuery

          public static List<String[]> dbQuery​(String query,
                                               String... args)

      検索するデータベースを指定して、Queryを実行します(Transaction 対応)。 ステートメントと引数により、Prepared クエリーの検索のみ実行します。 結果は,すべて文字列に変換されて格納されます。
      パラメータ:
        `query` - ステートメント文字列
        `args` - オブジェクトの引数配列
      戻り値:
        検索結果のリスト配列(結果が無ければ、サイズゼロのリスト)
      例外:
        `RuntimeException` - DB検索処理の実行に失敗した場合
      このメソッドは、nullを返しません

    - #### resultToArray

          public static List<String[]> resultToArray​(ResultSet resultSet)
                                              throws SQLException

      ResultSet より、結果の文字列配列を作成します。 結果は,すべて文字列に変換されて格納されます。 移動したメソッドで使われているのでこれも移動
      パラメータ:
        `resultSet` - ResultSetオブジェクト
      戻り値:
        ResultSetの検索結果リスト配列
      例外:
        `SQLException` - データベース・アクセス・エラーが発生した場合
      このメソッドは、nullを返しません

    - #### getInsertSQL

          public static String getInsertSQL​(String table,
                                            String[] keys,
                                            String[] conKeys,
                                            String[] conVals)

      データをインサートする場合に使用するSQL文を作成します。 これは、key に対応した ？ 文字列で、SQL文を作成します。 実際の値設定は、この、キーの並び順に応じた値を設定することになります。 conKeysとconValsは、固定値のキーと値です。 conKeys,conVals がnullの場合は、これらの値を使用しません。
      パラメータ:
        `table` - テーブルID
        `keys` - 設定値に対応するキー配列
        `conKeys` - 固定値の設定値に対応するキー配列
        `conVals` - 固定値に対応する値配列
      戻り値:
        インサートSQL
      このメソッドは、nullを返しません

    - #### getUpdateSQL

          public static String getUpdateSQL​(String table,
                                            String[] keys,
                                            String[] conKeys,
                                            String[] conVals,
                                            String where)

      データをアップデートする場合に使用するSQL文を作成します。 これは、key に対応した ？ 文字列で、SQL文を作成します。 実際の値設定は、この、キーの並び順に応じた値を設定することになります。 WHERE 文字列は、この、？ も含めたWHERE条件の文字列を渡します。 WHERE条件の場合は、この、？に、関数を設定したり、条件を指定したり、 色々なケースがあるため、単純にキーだけ指定する方法では、対応範囲が 限られるためです。 conKeysとconValsは、固定値のキーと値です。 conKeys,conVals,where がnullの場合は、これらの値を使用しません。
      パラメータ:
        `table` - テーブルID
        `keys` - 設定値に対応するキー配列
        `conKeys` - 固定値の設定値に対応するキー配列
        `conVals` - 固定値に対応する値配列(VARCHARのみ)
        `where` - WHERE条件式
      戻り値:
        アップデートSQL
      変更履歴:
        7.2.5.0 (2020/06/01) UPDATEで、? を含むｷｰﾜｰﾄﾞを、処理できるようにします。
      このメソッドは、nullを返しません

    - #### getDeleteSQL

          public static String getDeleteSQL​(String table,
                                            String where)

      データをデリートする場合に使用するSQL文を作成します。 これは、key に対応した ？ 文字列で、SQL文を作成します。 実際の値設定は、この、キーの並び順に応じた値を設定することになります。 WHERE 文字列は、この、？ も含めたWHERE条件の文字列を渡します。 WHERE条件の場合は、この、？に、関数を設定したり、条件を指定したり、 色々なケースがあるため、単純にキーだけ指定する方法では、対応範囲が 限られるためです。
      パラメータ:
        `table` - テーブルID
        `where` - 設定値に対応するキー配列(可変長引数)
      戻り値:
        デリートSQL
      このメソッドは、nullを返しません