1

这里只是一个指南,拜托!

我想在我的数据库中插入一些值,从 java 我有我的 oracle 准备好的语句和东西,它可以插入,但我的另一个要求是通过电子邮件发送由于某种原因没有插入的字段。

所以,我想把我的方法设为int,如果有错误则返回0,如果没问题,返回2,如果某些字段没有插入......等等......但是

我不知道如何绑定它,我的意思是如果从 java 中的 sql 捕获中存在错误,我可以说

catch (SQLException e) {// TODO Auto-generated catch block 
            e.printStackTrace();
            return result = 0;

显然我可以在我调用它的地方放一条错误消息和东西,但是我怎么知道在哪个项目停止然后检索未插入的其余字段......

任何想法?有人有例子吗?

提前致谢

4

3 回答 3

1

首先尝试在 Java 中进行尽可能多的验证,并在将不良记录保存到数据库之前识别它们,您可以在这些记录到达数据库并发送电子邮件之前捕获它们。

如果您担心数据库级别的问题,例如约束等,那么您需要选择 Performance vs Flexibile Features

选项1:不要一次使用批量插入一条记录,无论失败您都可以发送电子邮件,从性能角度来看这很糟糕,但会解决您的目的

选项 2:将您的记录分成 50 或 100 个批次,无论批次失败,您都可以报告整个批次失败,这也会报告一些好的记录,但您将获得有关未持久化的信息。

选项3:将您的记录分成批次,如果批次失败,请尝试为该特定批次一次保存一条记录,这样您就可以识别不良记录并优化性能,这将需要更多的编码和测试。

因此,您可以选择适合自己的,但我建议您遵循以下建议:

  1. 在 Java 中进行最大验证
  2. 分成更小的批次并使用选项 3。

干杯!!

于 2013-09-05T18:01:01.940 回答
0

当您有插入时,您插入语句中包含的所有字段;或者,没有。因此,如果在运行您的语句时抛出异常,那么您将发送一封电子邮件。

如果没有抛出异常,那么你会认为它已经工作了。

或者,在运行插入之后,您可以尝试进行选择以检查您插入的数据是否确实存在。

于 2013-09-05T17:44:06.377 回答
0

如果语句失败,则不会插入任何字段,因为 oracle 内部会进行回滚以保持数据的一致性。

于 2013-09-05T17:44:39.253 回答