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

# クラス DBUtil

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

public final class DBUtil extends Object
データベース処理を行う、簡易的なユーティリティークラスです。 staticメソッドしか持っていません。 sql文を execute( query ) する事により、データベースに書き込みます。 このクラスは、マルチスレッドに対して、安全です。

導入されたバージョン:
  JDK5.0,

- ## フィールドの概要

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

- ## メソッドの概要

  修飾子とタイプ
  メソッド
  説明
  `static List<String[]>`
  `dbQuery(String query, String... args)`
  検索するデータベースを指定して、Queryを実行します(Transaction 対応)。
  `static List<String[]>`
  `dbQuery(Transaction tarn, 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 insQuery, String updQuery, List<String[]> insList, List<String[]> updList, boolean useErrro)`
  データ配列のListを渡して実際のDB処理を実行します。
  `static int`
  `execute(String query, List<String[]> list)`
  データ配列のListを渡して実際のDB処理を実行します。
  `static int`
  `execute(String query, List<String[]> list, boolean useErrro)`
  データ配列のListを渡して実際のDB処理を実行します。
  `static int`
  `execute(Transaction tarn, String query, String... values)`
  データ配列を渡して実際の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(Transaction tarn, String query, String... values)
    データ配列を渡して実際のDB処理を実行します。 ここでは、１行だけ処理するための簡易メソッドを提供します。
    パラメータ:
      `tarn` - 外部から指定するTransactionｵﾌﾞｼﾞｪｸﾄ
      `query` - 実行するSQL文
      `values` - ？に割り当てる設定値
    戻り値:
      ここでの処理件数
    例外:
      `RuntimeException` - Connection DB処理の実行に失敗した場合
    変更履歴:
      7.4.2.0 (2021/05/14) 外部から指定するTransactionｵﾌﾞｼﾞｪｸﾄ 対応

  - ### execute

    public static int execute(String query, List<String[]> list)
    データ配列のListを渡して実際のDB処理を実行します。 データ配列は、１行分のデータに対する設定値の配列です。 これは、keys で指定した並び順と一致している必要があります。
    パラメータ:
      `query` - 実行するSQL文
      `list` - ？に割り当てる設定値
    戻り値:
      ここでの処理件数
    例外:
      `RuntimeException` - Connection DB処理の実行に失敗した場合
    変更履歴:
      7.4.1.0 (2021/04/23) 途中で整合性制約違反が発生した場合に継続するかどうかを指定できるようにします。

  - ### execute

    public static int execute(String query, List<String[]> list, boolean useErrro)
    データ配列のListを渡して実際のDB処理を実行します。 データ配列は、１行分のデータに対する設定値の配列です。 これは、keys で指定した並び順と一致している必要があります。 処理の途中で整合性制約違反が発生した場合に継続するかどうかを指定できるﾌﾗｸﾞを追加しています。 false に設定した場合は、ｴﾗｰが発生しても処理を継続して、commit します。(7.4.1.0 (2021/04/23) )
    パラメータ:
      `query` - 実行するSQL文
      `list` - ？に割り当てる設定値
      `useErrro` - false に設定すると、途中で整合性制約違反が発生しても処理を継続する。
    戻り値:
      ここでの処理件数
    例外:
      `RuntimeException` - Connection DB処理の実行に失敗した場合
    変更履歴:
      6.8.1.5 (2017/09/08) LOGGER.debug 情報の追加, 7.4.1.0 (2021/04/23) 途中で整合性制約違反が発生した場合に継続するかどうかを指定できるようにします。

  - ### execute

    public static int execute(String insQuery, String updQuery, List<String[]> insList, List<String[]> updList)
    データ配列のListを渡して実際のDB処理を実行します。(暫定メソッド) これは、updQueryで、更新してみて、０件の場合、insQuery で追加処理を行います。 データ配列は、１行分のデータに対する設定値の配列です。 これは、keys で指定した並び順と一致している必要があります。 処理の途中で整合性制約違反が発生した場合に継続するかどうかを指定できるﾌﾗｸﾞを追加しています。 false に設定した場合は、ｴﾗｰが発生しても処理を継続して、commit します。 (7.4.1.0 (2021/04/23) )
    パラメータ:
      `insQuery` - 追加するSQL文
      `updQuery` - 更新するSQL文
      `insList` - ？に割り当てる設定値
      `updList` - ？に割り当てる設定値
    戻り値:
      ここでの処理件数
    例外:
      `RuntimeException` - Connection DB処理の実行に失敗した場合
    変更履歴:
      7.4.1.0 (2021/04/23) 途中で整合性制約違反が発生した場合に継続するかどうかを指定できるようにします。

  - ### execute

    public static int execute(String insQuery, String updQuery, List<String[]> insList, List<String[]> updList, boolean useErrro)
    データ配列のListを渡して実際のDB処理を実行します。(暫定メソッド) これは、updQueryで、更新してみて、０件の場合、insQuery で追加処理を行います。 データ配列は、１行分のデータに対する設定値の配列です。 これは、keys で指定した並び順と一致している必要があります。
    パラメータ:
      `insQuery` - 追加するSQL文
      `updQuery` - 更新するSQL文
      `insList` - ？に割り当てる設定値
      `updList` - ？に割り当てる設定値
      `useErrro` - false に設定すると、途中で整合性制約違反が発生しても処理を継続する。
    戻り値:
      ここでの処理件数
    例外:
      `RuntimeException` - Connection DB処理の実行に失敗した場合
    変更履歴:
      6.8.1.5 (2017/09/08) LOGGER.debug 情報の追加, 7.4.1.0 (2021/04/23) 途中で整合性制約違反が発生した場合に継続するかどうかを指定できるようにします。

  - ### dbQuery

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

  - ### dbQuery

    public static List<String[]> dbQuery(Transaction tarn, String query, String... args)
    検索するデータベースを指定して、Queryを実行します(Transaction 対応)。 ステートメントと引数により、Prepared クエリーの検索のみ実行します。 結果は、すべて文字列に変換されて格納されます。
    パラメータ:
      `tarn` - 外部から指定するTransactionｵﾌﾞｼﾞｪｸﾄ
      `query` - ステートメント文字列
      `args` - オブジェクトの引数配列
    戻り値:
      検索結果のリスト配列(結果が無ければ、サイズゼロのリスト)
    例外:
      `RuntimeException` - DB検索処理の実行に失敗した場合
    変更履歴:
      7.4.2.0 (2021/05/14) 外部から指定するTransactionｵﾌﾞｼﾞｪｸﾄ 対応
    このﾒｿｯﾄﾞは、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を返しません