Java对异常如何进行判断和处理??

现在有两个错误:
第一个:
java.sql.SQLException : ORA-00001: 违反唯一约束条件 (SHIEP.U_TEACHER)ORA-06512: 在 "SHIEP.INSERTTEACOU", line 5ORA-06512: 在 line 1
at oracle.jdbc.driver.DatabaseError.throwSqlException( DatabaseError.java:111)
之后的报错信息 略。。。。

是关于违反Oracle一个唯一性约束U_TEACHER

第二个:
java.sql.SQLException : ORA-00001: 违反唯一约束条件 (SHIEP.U_ROOM)ORA-06512: 在 "SHIEP.INSERTTEACOU", line 5ORA-06512: 在 line 1
at oracle.jdbc.driver.DatabaseError.throwSqlException( DatabaseError.java:111)
之后的报错信息略。。。。

是关于违反Oracle另一个唯一性约束U_ROOM

我是Java新手。我想问下如何在Java代码中判断操作违反了哪个约束??
在异常处理这一块我要进行什么样的判断??

try{
//操作数据库代码

}catch(Exception e){
if(e.getMessage().indexOf("U_TEACHER")>0){
System.out.println("是关于违反Oracle一个唯一性约束U_TEACHER");

}else if(e.getMessage().indexOf("U_ROOM")>0){
System.out.println("是关于违反Oracle一个唯一性约束U_ROOM");

}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-10
首先是你想怎么处理?
数据库报错了,java代码怎么处理你这个insert都不能继续下去了
所以你要么直接将错误抛到页面方法后面加throws Exception
要么自行处理
try {
//你的调用insert的方法
} catch (SQLException e) {
//这里自定义处理方法
}
第2个回答  2013-04-10
做好事物管理,违反了就全部回退。最好在插入前自己判断下有没有重复主键,有就不去连接数据库插入数据了,直接在那将异常抛到前端追问

不用回退。违反约束,该操作就是失败的,我的问题是如何在Java判断它是那一种SQLException

追答

你是要判断是哪个字段违反了约束?那就根据插入对象来判断,违反约束肯定是主键,要不就用截取异常信息的字符串来做

第3个回答  2013-04-10
在java中判断数据库中操作违反了哪个约束,可以通过try-catch块来捕捉,数据库中违反约束的情况,在java中是通过异常的形式来显示,具体违反的操作需要查看sql语句追问

首先我知道try-catch,我遇到的问题是我不知道如何去捕捉不同的SQLException,对SQLException如何去区分。。。?

相似回答