Java 发现批更新的哪些记录失败

Java 发现批更新的哪些记录失败,java,database,jdbc,Java,Database,Jdbc,我正在使用jdbc用java批量更新1000条记录。其中800条记录更新成功,200条记录失效。所以我想从批更新查询中检查所有200条记录更新失败的原因,我将使用批插入将它们插入数据库。如何实现这一点?executeBath()语句中的方法返回一个整数数组(每个执行的命令一个整数)。每个整数表示更新计数。如果1或更大,则更新成功完成;如果为0,则没有使用相应的命令更新记录 例如: List<YourClass> objectsToUpdate = getObjectsToUpdate

我正在使用jdbc用java批量更新1000条记录。其中800条记录更新成功,200条记录失效。所以我想从批更新查询中检查所有200条记录更新失败的原因,我将使用批插入将它们插入数据库。如何实现这一点?

executeBath()
语句中的方法返回一个整数数组(每个执行的命令一个整数)。每个整数表示更新计数。如果1或更大,则更新成功完成;如果为0,则没有使用相应的命令更新记录

例如:

List<YourClass> objectsToUpdate = getObjectsToUpdate();

for (YourClass object : objectsToUpdate) {
    String updateCommand = generateUpdateCommand(object);
    statement.addBatch(updateCommand);
}
int[] results = statement.executeBatch();

List<YourClass> notUpdated = new ArrayList<YourObject>();

for (int i = 0; i < results.length; i++) {
    if (results[i] == 0) {
        notUpdated.add(objectsToUpdate.get(i));
    }
}
List objectsToUpdate=getObjectsToUpdate();
for(YourClass对象:objectsToUpdate){
字符串updateCommand=generateUpdateCommand(对象);
语句.addBatch(updateCommand);
}
int[]results=statement.executeBatch();
List notUpdated=new ArrayList();
for(int i=0;i
这只是为了演示算法。考虑使用<代码> PraveRealds< /C> >而不是<代码>语句 .< /P> < P> <代码> ExcuteBoT()/代码>方法> <代码>语句>代码>返回整数数组(每个命令执行一个整数)。每个整数表示更新计数。如果1或更大,则更新成功完成;如果为0,则没有使用相应的命令更新记录

例如:

List<YourClass> objectsToUpdate = getObjectsToUpdate();

for (YourClass object : objectsToUpdate) {
    String updateCommand = generateUpdateCommand(object);
    statement.addBatch(updateCommand);
}
int[] results = statement.executeBatch();

List<YourClass> notUpdated = new ArrayList<YourObject>();

for (int i = 0; i < results.length; i++) {
    if (results[i] == 0) {
        notUpdated.add(objectsToUpdate.get(i));
    }
}
List objectsToUpdate=getObjectsToUpdate();
for(YourClass对象:objectsToUpdate){
字符串updateCommand=generateUpdateCommand(对象);
语句.addBatch(updateCommand);
}
int[]results=statement.executeBatch();
List notUpdated=new ArrayList();
for(int i=0;i

这只是为了演示算法。考虑使用<代码> PraveRealds< /Cult>而不是<代码>语句< /C> >

< P>完整性,也很重要的是,当使用批处理更新时,JDBC驱动程序也可以返回(作为整数数组的一部分)StuttReal.RealthNoNoFIN(当没有关于更新行的信息可用)或StestMist.ExcExtEy失败时。(发生异常时)


一些JDBC驱动程序甚至可能在出现异常时停止执行进一步的语句(更新)。

为了完整起见,还必须指出,在使用批更新时,JDBC驱动程序还可能返回语句(作为整数数组的一部分)。SUCCESS\u NO\u INFO(当没有更新行的信息可用时)或Statement.EXECUTE\u FAILED(发生异常时)


一些JDBC驱动程序甚至可能停止执行进一步的语句(更新)如果出现异常。

批处理查询是否返回一个反映更新记录的整数数组?是的,但我想知道哪些记录未更新返回数组中值为0的所有记录批处理查询是否返回一个反映更新记录的整数数组?是的,但我想知道哪些记录未更新未更新返回的数组中值为0的所有记录,但未更新的记录(查询失败)我要检索它们。如何检索?类似于这样的操作:拥有对象列表/数组,您可以为每个对象生成一个命令,并调用addBatch(),然后调用executeBatch(),返回一个数组。然后迭代并检查项是否为0。如果为0,则对应数组索引中的对象未更新。但我想检索哪些未更新(查询失败)的记录。我该如何检索它们?类似这样的操作:拥有对象列表/数组,您可以为每个对象生成一个命令,并调用addBatch(),然后调用executeBatch(),返回一个数组。然后迭代并检查项是否为0。如果为0,则相应数组索引中的对象未更新。