模块  java.sql
软件包  java.sql

Class BatchUpdateException

  • 实现的所有接口
    SerializableIterable<Throwable>

    public class BatchUpdateException
    extends SQLException
    批处理更新操作期间发生错误时抛出SQLException的子类。 除了BatchUpdateException提供的信息之外BatchUpdateException还提供了批量更新期间成功执行的所有命令的更新计数,即在错误发生之前执行的所有命令。 更新计数数组中元素的顺序对应于命令添加到批处理的顺序。

    在批量更新中的命令无法正确执行并且抛出BatchUpdateException ,驱动程序可能会也可能不会继续处理批处理中的其余命令。 如果驱动程序在失败后继续处理,则方法BatchUpdateException.getUpdateCounts返回的数组将为批处理中的每个命令提供一个元素,而不是仅包含在错误之前成功执行的命令的元素。 在驱动程序继续处理命令的情况下,任何失败命令的数组元素是Statement.EXECUTE_FAILED

    JDBC驱动程序实现应该使用构造函数BatchUpdateException(String reason, String SQLState, int vendorCode, long []updateCounts,Throwable cause)而不是构造函数,这些构造函数将int[]用于更新计数以避免溢出的可能性。

    如果调用Statement.executeLargeBatch方法,建议调用getLargeUpdateCounts而不是getUpdateCounts ,以避免整数更新计数可能溢出。

    从以下版本开始:
    1.2
    另请参见:
    Serialized Form
    • 构造方法详细信息

      • BatchUpdateException

        public BatchUpdateException​(String reason,
                                    String SQLState,
                                    int vendorCode,
                                    int[] updateCounts)
        构造一个BatchUpdateException与给定的初始化的对象reasonSQLStatevendorCodeupdateCounts cause未初始化,随后可通过调用Throwable.initCause(java.lang.Throwable)方法进行初始化。

        注意:没有溢出updateCounts验证,因此建议您使用构造函数BatchUpdateException(String reason, String SQLState, int vendorCode, long []updateCounts,Throwable cause)

        参数
        reason - 错误的描述
        SQLState - 标识异常的XOPEN或SQL:2003代码
        vendorCode - 特定数据库供应商使用的异常代码
        updateCounts - 数组int ,其中每个元素指示Statement.EXECUTE_FAILED中的每个SQL命令,在命令失败后继续处理的JDBC驱动程序; Statement.SUCCESS_NO_INFOStatement.EXECUTE_FAILED ; 在命令失败后停止处理的JDBC驱动程序失败之前,批处理中每个SQL命令的更新计数或Statement.SUCCESS_NO_INFO
        从以下版本开始:
        1.2
        另请参见:
        BatchUpdateException(java.lang.String, java.lang.String, int, long[], java.lang.Throwable)
      • BatchUpdateException

        public BatchUpdateException​(String reason,
                                    String SQLState,
                                    int[] updateCounts)
        构造一个BatchUpdateException与给定的初始化的对象reasonSQLStateupdateCounts cause未初始化,随后可通过调用Throwable.initCause(java.lang.Throwable)方法进行初始化。 供应商代码初始化为0。

        注意:没有溢出updateCounts验证,因此建议您使用构造函数BatchUpdateException(String reason, String SQLState, int vendorCode, long []updateCounts,Throwable cause)

        参数
        reason - 异常的描述
        SQLState - 标识异常的XOPEN或SQL:2003代码
        updateCounts - 数组int ,每个元素指示更新计数, Statement.SUCCESS_NO_INFOStatement.EXECUTE_FAILED用于批处理中的每个SQL命令,用于在命令失败后继续处理的JDBC驱动程序; 对于在命令失败后停止处理的JDBC驱动程序失败之前批处理中的每个SQL命令的更新计数或Statement.SUCCESS_NO_INFO
        从以下版本开始:
        1.2
        另请参见:
        BatchUpdateException(java.lang.String, java.lang.String, int, long[], java.lang.Throwable)
      • BatchUpdateException

        public BatchUpdateException​(String reason,
                                    int[] updateCounts)
        构造使用给定的reasonupdateCounts初始化的BatchUpdateException对象。 cause未初始化,随后可通过调用Throwable.initCause(java.lang.Throwable)方法进行初始化。 SQLState初始化为null ,供应商代码初始化为0。

        注意:没有溢出updateCounts验证,因此建议您使用构造函数BatchUpdateException(String reason, String SQLState, int vendorCode, long []updateCounts,Throwable cause)

        参数
        reason - 异常的描述
        updateCounts - 数组int ,每个元素指示更新计数, Statement.SUCCESS_NO_INFOStatement.EXECUTE_FAILED用于批处理中的每个SQL命令,用于在命令失败后继续处理的JDBC驱动程序; 在命令失败后停止处理的JDBC驱动程序失败之前,批处理中每个SQL命令的更新计数或Statement.SUCCESS_NO_INFO
        从以下版本开始:
        1.2
        另请参见:
        BatchUpdateException(java.lang.String, java.lang.String, int, long[], java.lang.Throwable)
      • BatchUpdateException

        public BatchUpdateException​(int[] updateCounts)
        构造使用给定的updateCounts初始化的BatchUpdateException对象。 通过调用Throwable.initCause(java.lang.Throwable)方法初始化。 reasonSQLState初始化为null,供应商代码初始化为0。

        注意:溢出没有updateCounts验证,因此建议您使用构造函数BatchUpdateException(String reason, String SQLState, int vendorCode, long []updateCounts,Throwable cause)

        参数
        updateCounts - 数组int ,每个元素指示更新计数, Statement.SUCCESS_NO_INFOStatement.EXECUTE_FAILED用于批处理中的每个SQL命令,用于在命令失败后继续处理的JDBC驱动程序; 对于在命令失败后停止处理的JDBC驱动程序失败之前批处理中的每个SQL命令的更新计数或Statement.SUCCESS_NO_INFO
        从以下版本开始:
        1.2
        另请参见:
        BatchUpdateException(java.lang.String, java.lang.String, int, long[], java.lang.Throwable)
      • BatchUpdateException

        public BatchUpdateException​(Throwable cause)
        构造用给定的cause初始化的BatchUpdateException对象。 所述SQLStateupdateCounts被初始化为null ,供应商代码被初始化为0。 reason被初始化为null如果cause==nullcause.toString()如果cause!=null
        参数
        cause - 此SQLException的基本原因(保存以供以后通过getCause()方法检索); 可以为空,表示原因不存在或未知。
        从以下版本开始:
        1.6
        另请参见:
        BatchUpdateException(java.lang.String, java.lang.String, int, long[], java.lang.Throwable)
      • BatchUpdateException

        public BatchUpdateException​(int[] updateCounts,
                                    Throwable cause)
        构造使用给定的causeupdateCounts初始化的BatchUpdateException对象。 SQLState被初始化为null ,供应商代码被初始化为0。 reason被初始化为null如果cause==nullcause.toString()如果cause!=null

        注意:溢出没有updateCounts验证,因此建议您使用构造函数BatchUpdateException(String reason, String SQLState, int vendorCode, long []updateCounts,Throwable cause)

        参数
        updateCounts - 数组int ,每个元素指示更新计数, Statement.SUCCESS_NO_INFOStatement.EXECUTE_FAILED用于批处理中的每个SQL命令,用于在命令失败后继续处理的JDBC驱动程序; 在命令失败后停止处理的JDBC驱动程序失败之前,批处理中每个SQL命令的更新计数或Statement.SUCCESS_NO_INFO
        cause - 此SQLException的基本原因(保存以供以后通过getCause()方法检索); 可以为空,表示原因不存在或未知。
        从以下版本开始:
        1.6
        另请参见:
        BatchUpdateException(java.lang.String, java.lang.String, int, long[], java.lang.Throwable)
      • BatchUpdateException

        public BatchUpdateException​(String reason,
                                    int[] updateCounts,
                                    Throwable cause)
        构造一个BatchUpdateException与给定的初始化的对象reasoncauseupdateCounts SQLState初始化为null ,供应商代码初始化为0。

        注意:溢出没有updateCounts验证,因此建议您使用构造函数BatchUpdateException(String reason, String SQLState, int vendorCode, long []updateCounts,Throwable cause)

        参数
        reason - 异常的描述
        updateCounts - 数组int ,每个元素指示更新计数, Statement.SUCCESS_NO_INFOStatement.EXECUTE_FAILED用于批处理中的每个SQL命令,用于在命令失败后继续处理的JDBC驱动程序; 在命令失败后停止处理的JDBC驱动程序失败之前,批处理中每个SQL命令的更新计数或Statement.SUCCESS_NO_INFO
        cause - 此SQLException的基本原因(保存以供以后通过getCause()方法检索); 可以为空,表示原因不存在或未知。
        从以下版本开始:
        1.6
        另请参见:
        BatchUpdateException(java.lang.String, java.lang.String, int, long[], java.lang.Throwable)
      • BatchUpdateException

        public BatchUpdateException​(String reason,
                                    String SQLState,
                                    int[] updateCounts,
                                    Throwable cause)
        构造一个BatchUpdateException与给定的初始化的对象reasonSQLStatecause ,和updateCounts 供应商代码初始化为0。
        参数
        reason - 异常的描述
        SQLState - 标识异常的XOPEN或SQL:2003代码
        updateCounts - 数组int ,每个元素指示更新计数, Statement.SUCCESS_NO_INFOStatement.EXECUTE_FAILED用于批处理中的每个SQL命令,用于在命令失败后继续处理的JDBC驱动程序; 在命令失败后停止处理的JDBC驱动程序失败之前,批处理中每个SQL命令的更新计数或Statement.SUCCESS_NO_INFO

        注意:没有溢出updateCounts验证,因此建议您使用构造函数BatchUpdateException(String reason, String SQLState, int vendorCode, long []updateCounts,Throwable cause)

        cause - 此SQLException的基本原因(保存以供以后通过getCause()方法检索); 可以为空,表示原因不存在或未知。
        从以下版本开始:
        1.6
        另请参见:
        BatchUpdateException(java.lang.String, java.lang.String, int, long[], java.lang.Throwable)
      • BatchUpdateException

        public BatchUpdateException​(String reason,
                                    String SQLState,
                                    int vendorCode,
                                    int[] updateCounts,
                                    Throwable cause)
        构造一个 BatchUpdateException与给定的初始化的对象 reasonSQLStatevendorCode causeupdateCounts
        参数
        reason - 错误的描述
        SQLState - 标识异常的XOPEN或SQL:2003代码
        vendorCode - 特定数据库供应商使用的异常代码
        updateCounts - 数组int ,其中每个元素指示Statement.EXECUTE_FAILED中的每个SQL命令,在命令失败后继续处理的JDBC驱动程序; Statement.SUCCESS_NO_INFOStatement.EXECUTE_FAILED ; 在命令失败后停止处理的JDBC驱动程序失败之前,批处理中每个SQL命令的更新计数或Statement.SUCCESS_NO_INFO

        注意:溢出没有updateCounts验证,因此建议您使用构造函数BatchUpdateException(String reason, String SQLState, int vendorCode, long []updateCounts,Throwable cause)

        cause - 此SQLException的基本原因(保存以供以后通过getCause()方法检索); 可以为空,表示原因不存在或未知。
        从以下版本开始:
        1.6
        另请参见:
        BatchUpdateException(java.lang.String, java.lang.String, int, long[], java.lang.Throwable)
      • BatchUpdateException

        public BatchUpdateException​(String reason,
                                    String SQLState,
                                    int vendorCode,
                                    long[] updateCounts,
                                    Throwable cause)
        构造一个BatchUpdateException与给定的初始化的对象reasonSQLStatevendorCode causeupdateCounts

        当返回的更新计数可能超过Integer.MAX_VALUE时,应使用此构造函数。

        参数
        reason - 错误的描述
        SQLState - 标识异常的XOPEN或SQL:2003代码
        vendorCode - 特定数据库供应商使用的异常代码
        updateCounts - 数组long ,每个元素指示更新计数, Statement.SUCCESS_NO_INFOStatement.EXECUTE_FAILED用于批处理中的每个SQL命令,用于在命令失败后继续处理的JDBC驱动程序; 对于在命令失败后停止处理的JDBC驱动程序失败之前批处理中的每个SQL命令的更新计数或Statement.SUCCESS_NO_INFO
        cause - 此SQLException的基本原因(保存以供以后通过getCause()方法检索); 可以为空,表示原因不存在或未知。
        从以下版本开始:
        1.8
    • 方法详细信息

      • getUpdateCounts

        public int[] getUpdateCounts()
        检索在发生此异常之前成功执行的批处理更新中的每个更新语句的更新计数。 当其中一个命令无法正确执行时,实现批量更新的驱动程序可能会也可能不会继续处理批处理中的其余命令。 如果驱动程序继续处理命令,则此方法返回的数组将包含与批处理中的命令一样多的元素; 否则,它将包含在抛出BatchUpdateException之前成功执行的每个命令的更新计数。

        此方法的可能返回值已针对Java 2 SDK标准版1.3版进行了修改。 这样做是为了适应在抛出BatchUpdateException对象后继续处理批量更新中的命令的新选项。

        结果
        一个int的数组,包含在发生此错误之前已成功执行的更新的更新计数。 或者,如果驱动程序在发生错误后继续处理命令,则批处理中的每个命令都会执行以下操作之一:
        1. 更新计数
        2. Statement.SUCCESS_NO_INFO表示命令执行成功但受影响的行数未知
        3. Statement.EXECUTE_FAILED表示命令未能成功执行
        从以下版本开始:
        1.3
        另请参见:
        getLargeUpdateCounts()
      • getLargeUpdateCounts

        public long[] getLargeUpdateCounts()
        检索在发生此异常之前成功执行的批处理更新中的每个更新语句的更新计数。 当其中一个命令无法正确执行时,实现批量更新的驱动程序可能会也可能不会继续处理批处理中的其余命令。 如果驱动程序继续处理命令,则此方法返回的数组将包含与批处理中的命令一样多的元素; 否则,它将包含在抛出BatchUpdateException之前成功执行的每个命令的更新计数。

        调用Statement.executeLargeBatch并且返回的更新计数可能超过Integer.MAX_VALUE时,应使用此方法。

        结果
        一个long的数组,包含在发生此错误之前已成功执行的更新的更新计数。 或者,如果驱动程序在发生错误后继续处理命令,则批处理中的每个命令都会执行以下操作之一:
        1. 更新计数
        2. Statement.SUCCESS_NO_INFO表示命令执行成功但受影响的行数未知
        3. Statement.EXECUTE_FAILED表示命令未能成功执行
        从以下版本开始:
        1.8