审核违规商品java实现_Java MySQL完整性违规处理

我使用JDBC(mysql数据库)编写Java程序.

当我违反mysql完整性(f.e.我尝试插入相同的主键值)时,我捕获SQL异常.

我应该以它的方式编写它可能永远不会发生(例如,在第一个布尔函数检查主键值是否已经存在于DB中然后调用insert),或者是否可以通过异常处理它?

示例:

catch (SQLException ex) {ex.printStackTrace(); showSomeErrorDialog(); }

解决方法:

确实有两种方法可以达到这个目的:

>在插入之前测试是否存在记录 – 在同一事务中.

>确定0700捕获的SQLException是否以23开始,这是违反约束的,因为SQL specification.它可能是由多于“仅”约束违规的因素引起的.您不应将每个SQLException修改为约束违规.

public static boolean isConstraintViolation(SQLException e) {

return e.getSQLState().startsWith("23");

}

我会选择第一个,因为它在语义上更正确.事实上,这并非特殊情况.你知道它可能会发生.但是,在交互不同步(无意识或优化性能)的繁重并发环境中,它可能会失败.然后,您可能希望确定异常.

也就是说,通常不应该在主键上出现约束违规.在设计良好的数据模型中,使用技术密钥作为主键,它们通常由数据库本身管理.这个领域不应该是一个独特的关键吗?

标签:java,jdbc,integrity

来源: https://codeday.me/bug/20190527/1159576.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值