Module  java.sql
软件包  java.sql

Class BatchUpdateException

  • All Implemented Interfaces:
    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)而不是使用构建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.SUCCESS_NO_INFOStatement.EXECUTE_FAILED在批次JDBC驱动程序继续命令失败后处理中的每个SQL命令; 在命令失败后停止处理的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在批次JDBC驱动程序继续命令失败后处理中的每个SQL命令; 在命令失败后停止处理的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)
        构造一个BatchUpdateException对象,该对象使用给定的reasonupdateCounts初始化。 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在批次JDBC驱动程序继续命令失败后处理中的每个SQL命令; 在命令失败后停止处理的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)
        构造一个BatchUpdateException对象,初始化为给定的updateCounts 通过调用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在批次JDBC驱动程序继续命令失败后处理中的每个SQL命令; 在命令失败后停止处理的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)
        构造一个BatchUpdateException对象,使用给定的cause初始化。 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)
        构造一个BatchUpdateException对象,该对象使用给定的causeupdateCounts初始化。 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在批次JDBC驱动程序继续命令失败后处理中的每个SQL命令; 在命令失败后停止处理的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在批次JDBC驱动程序继续命令失败后处理中的每个SQL命令; 在命令失败后停止处理的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在批次JDBC驱动程序继续命令失败后处理中的每个SQL命令; 在命令失败后停止处理的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.SUCCESS_NO_INFOStatement.EXECUTE_FAILED在批次JDBC驱动程序继续命令失败后处理中的每个SQL命令; 在命令失败后停止处理的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在批次JDBC驱动程序继续命令失败后处理中的每个SQL命令; 在命令失败后停止处理的JDBC驱动程序发生故障之前,批处理中的每个SQL命令的更新计数或Statement.SUCCESS_NO_INFO
        cause - 这个SQLException的基本原因(由getCause()方法保存供以后检索); 可能为空,表示原因不存在或未知。
        从以下版本开始:
        1.8
    • 方法详细信息

      • getUpdateCounts

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

        针对Java 2 SDK(Standard Edition,版本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