处理违反的唯一约束(SYSTEM.SYS_C006997)

时间:2014-09-23 14:34:34

标签: java oracle exception jdbc

这是我的程序给出的错误。 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();
    }
    }

2 个答案:

答案 0 :(得分:0)

默认情况下,从DataSource获取的所有新连接都处于自动提交模式。这意味着您的insert语句会立即提交。

如果您发现约束违规异常并且您不知道此约束与哪个表相关,则可以通过此选择查看约束详细信息:

select * from user_constraints where constraint_name='SYS_C006997'
祝你好运。

答案 1 :(得分:0)

在该特定表中,您应用名为SYS_C006997的唯一约束。 检查特定列是否正确定义。

在Oracle中,无需执行 auto_commit 。默认情况下,所有oracle命令都将自动提交。