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

列挙クラス DBFunctionName

java.lang.Object
java.lang.Enum<DBFunctionName>
org.opengion.fukurou.db.DBFunctionName
すべての実装されたインタフェース:
Serializable, Comparable<DBFunctionName>, Constable

public enum DBFunctionName extends Enum<DBFunctionName>
各データベースに対応するenum名を返します。 主に、各データベースにおける関数名の差異を吸収するためのenumです。 本来は、互換性のあるファンクション以外、使用しないようにしましょう。 また、無ければ互換性パックなどで、ファンクションを定義してしまうのも 一つの方法です。
各データベースにおける関数
データベース名 連結部分文字列日付関数 DUAL検索
{@DBF.XXX}CON SUBSTR SYSDATE FROM_DUAL
ORACLE || SUBSTR SYSDATE FROM DUAL
HSQL || SUBSTR CURRENT_TIMESTAMPFROM DUAL
POSTGRES || SUBSTR CURRENT_DATE
MYSQL || SUBSTR now() FROM DUAL
SQLSERVER + SUBSTRING GETDATE()
FIREBIRD || SUBSTR CURRENT_DATE FROM RDB$DATABASE
DERBY || SUBSTR CURRENT_TIMESTAMPFROM SYSIBM.SYSDUMMY1
CACHE || SUBSTRING SYSDATE FROM DUAL
H2 || SUBSTR SYSDATE FROM DUAL
OTHER || SUBSTR SYSDATE FROM DUAL
※ MySQLでは、通常文字列連結は、CONCAT関数を使います。パイプ(||)で結合するには、 SET sql_mode='PIPES_AS_CONCAT' しておく必要があります。 JDBCで設定する場合は、jdbc:mysql://《サーバー》/《DB名》?sessionVariables=sql_mode='PIPES_AS_CONCAT' と指定します。
変更履歴:
5.1.4.0 (2010/03/01) 新規作成, 5.8.5.0 (2015/03/06) CACHE追加, 8.0.1.1 (2021/11/12) FROM DUAL 項目追加
導入されたバージョン:
JDK5.0,
  • 列挙型定数の詳細

  • メソッドの詳細

    • values

      public static DBFunctionName[] values()
      この列挙クラスの定数を含む配列を宣言されている順序で 返します。
      戻り値:
      この列挙クラスの定数を宣言されている順序で含む配列
    • valueOf

      public static DBFunctionName valueOf(String name)
      このクラスの列挙型定数を指定した名前で返します。 文字列は、このクラスの列挙型定数の宣言に使用された識別子と正確に 一致する必要があります。(余分な空白文字は使用 できません。)
      パラメータ:
      name - 返される列挙型定数の名前。
      戻り値:
      指定した名前の列挙型定数
      例外:
      IllegalArgumentException - この列挙クラスに、指定した名前の定数がない場合
      NullPointerException - 引数がnullの場合
    • getFunctionName

      public String getFunctionName(String func)
      共通ファンクションに対応するデータベース個別のファンクション名を返します。 現時点では、NAME,CON,SUBSTR のみ使用できます。
      パラメータ:
      func - 共通ファンクション
      戻り値:
      ファンクション名
      変更履歴:
      5.1.4.0 (2010/03/01) 新規作成, 6.2.2.1 (2015/03/31) SYSDATE 項目追加, 6.3.9.1 (2015/11/27) メソッドの出口は、最後の1か所にすべきです(PMD)。, 5.9.19.1 (2017/04/14) DBF.TYPE追加, 8.0.1.1 (2021/11/12) FROM DUAL 項目追加
    • getFunctionName

      public static String getFunctionName(String func, String dbid)
      各データベースに対応するファンクション名を返します。
      パラメータ:
      func - ファンクション名(定義文字)
      dbid - 接続先ID
      戻り値:
      実ファンクション名
      変更履歴:
      4.3.8.0 (2009/08/01) SUBSTRを追加, 5.1.2.0 (2010/01/01) MySQL対応、SUBSTRB廃止(帳票データの分割の内部処理化に伴う), 5.1.4.0 (2010/03/01) データベース名 ではなく、dbid で判断するように変更, 5.7.7.2 (2014/06/20) DBF.NAME 時の処理の簡素化, 6.2.1.0 (2015/03/13) NAME だけ特殊処理するのではなく、統一する。
    • getSequence

      public int getSequence(String seqName, Transaction tran)
      シーケンス名よりシーケンスオブジェクトを検索し、次の値を取り出します。 DBに対するシーケンスオブジェクトは予め作成されている必要があります。 また、MySQLの場合は、シーケンスオブジェクトが実装されていないため、 内部的には、引数のシーケンス名と同じ名前のテーブルから、Integer型の "SEQID"という項目名を検索することにより、シーケンスをエミュレートしています。
      パラメータ:
      seqName - シーケンス名
      tran - トランザクション
      戻り値:
      シーケンス番号
      変更履歴:
      5.1.9.0 (2010/08/01) 新規追加, 5.8.5.0 (2015/03/06) CACHE追加, 5.9.31.1 (2018/04/13) DBID追加対応
    • getSequence

      public int getSequence(String seqName, Transaction tran, String dbid)
      シーケンス名よりシーケンスオブジェクトを検索し、次の値を取り出します。 DBに対するシーケンスオブジェクトは予め作成されている必要があります。 また、MySQLの場合は、シーケンスオブジェクトが実装されていないため、 内部的には、引数のシーケンス名と同じ名前のテーブルから、Integer型の "SEQID"という項目名を検索することにより、シーケンスをエミュレートしています。
      パラメータ:
      seqName - シーケンス名
      tran - トランザクション
      dbid - データベースID
      戻り値:
      シーケンス番号
      変更履歴:
      5.1.9.0 (2010/08/01) 新規追加, 5.8.5.0 (2015/03/06) CACHE追加, 6.4.9.3 (2016/08/26) JavaDB(APACHE DERBY) の追加, 5.9.31.1 (2018/04/13) DBID追加対応, 6.9.8.0 (2018/05/28) DBID 対応漏れ、arg引数がないことを明確にするため、nullを渡します。, 8.5.4.2 (2024/01/12) PMD 7.0.0 FormalParameterNamingConventions 対応, 8.5.5.1 (2024/02/29) switch式の使用
    • getDBName

      public static DBFunctionName getDBName(String dbName)
      各データベースに対応するenum名を返します。
      パラメータ:
      dbName - データベース名(null不可)
      戻り値:
      データベースに対応するenum名
      変更履歴:
      5.1.4.0 (2010/03/01) 新規作成, 5.8.5.0 (2015/03/06) CACHE追加, 6.3.9.1 (2015/11/27) メソッドの出口は、最後の1か所にすべきです(PMD)。, 6.4.5.0 (2016/04/08) 規定以外のデータベースでも、動作するように、OTHER を用意する。, 6.4.9.3 (2016/08/26) JavaDB(APACHE DERBY) の追加, 6.8.3.0 (2017/11/27) H2 の追加
      このメソッドは、nullを返しません