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");
}

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

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

相关文章

连接数据库的方式:第一种方式:ODBC:开放数据库连接是微软...
JDBCRequest 使用VariableNamesmysql:数据库连接池对象var...
 1.JDBCDBC(JavaDataBaseConnectivity):Java数据库连接技术...
1.需要jar包的支持:java.sqljavax.sqlmysql-conneter-java....
1.简介Activiti是一个业务流程管理(BPM)框架,它是覆盖了业务...
1.JDBC体系系统一组规范:接口JDBC接口(API)包括两个层次:...