这是我的程序给出的错误。 java.sql.SQLException:ORA-00001:违反了唯一约束(SYSTEM.SYS_C006997)
我尝试了以下代码仍然是JOptionPane中的错误消息不是"用户存在" ..我怎样才能做到这一点? 我还需要从我的程序执行commit语句来保存在oracle db中创建的表吗?
try {
Statement stmt = con.createStatement();
stmt.executeUpdate("insert into users values('"+st1+"','"+st2+"')");
JOptionPane.showMessageDialog(null,"User Added","Message",JOptionPane.INFORMATION_MESSAGE);
setVisible(false);
src.addusr.main(null);
}
catch(SQLIntegrityConstraintViolationException e)
{
JOptionPane.showMessageDialog(null,"User Already Exists","Message",JOptionPane.ERROR_MESSAGE);
}
catch(SQLException e2) {
JOptionPane.showMessageDialog(null,e2.getMessage(),"Message",JOptionPane.ERROR_MESSAGE);
e2.printStackTrace();
}
try {
Statement stmt1 = con.createStatement();
stmt1.executeUpdate("commit");
}
catch(SQLException e6) {
e6.printStackTrace();
}
}
答案 0 :(得分:0)
默认情况下,从DataSource获取的所有新连接都处于自动提交模式。这意味着您的insert语句会立即提交。
如果您发现约束违规异常并且您不知道此约束与哪个表相关,则可以通过此选择查看约束详细信息:
select * from user_constraints where constraint_name='SYS_C006997'
祝你好运。
答案 1 :(得分:0)
在该特定表中,您应用名为SYS_C006997的唯一约束。 检查特定列是否正确定义。
在Oracle中,无需执行 auto_commit 。默认情况下,所有oracle命令都将自动提交。