2014-09-23 109 views
0

這是我的程序給出的錯誤。 java.sql.SQLException:ORA-00001:唯一約束(SYSTEM.SYS_C006997)違反違反處理唯一約束(SYSTEM.SYS_C006997)

我試過以下代碼,但JOptionPane中的錯誤消息仍然不是「用戶存在」..我該怎麼做? 我也需要從我的程序執行提交語句來保存在oracle數據庫中創建的表?

 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

這可能是驅動程序特定的;您使用哪個驅動程序和版本連接到數據庫? – 2014-09-23 14:53:34

+0

使用ojdbc14進行連接 – 2014-09-23 15:08:35

回答

0

默認情況下,從數據源獲得的所有新的連接處於自動提交模式。這意味着你的insert語句立即被提交。

如果發現違反約束的例外,你不知道的表的約束,你可以看到這個選擇限制信息相關:

select * from user_constraints where constraint_name='SYS_C006997' 

好運。

0

在該特定表中,您正在應用名爲SYS_C006997的唯一約束。 檢查特定列是否正確定義。

在Oracle中,不需要執行auto_commit。默認情況下所有的oracle命令都會自動提交。