一次就够了
select * from table where a=? or b=? or .......

解决方案 »

  1.   

    你分析异常的message就知道是哪个字段了
    比如名字:"Exception:name..."必然有个字段名字叫name出现在message中
    那么你就知道违反哪个约束了
      

  2.   

    大概数据库本身也不会将如此详细的内容返回给JDBC吧!
      

  3.   

    我以前看到过这样的信息,不过是oracle自己的驱动
    至于其他驱动就不清楚了
      

  4.   

    我们一般都是用的Oracle提供的驱动,但是我倒是没注意到gdsean所说的信息:)你可以试一下,如果gdsean的方法可行,当然是最好了的,如果不行,javafox的方法比较笨,但也挺管用呀。
      

  5.   

    较好的规划是自己封装重要的Exception,在程序中返回详细信息。
      

  6.   

    javafox 的方法不行,无法知道哪一个字段重复造成了Exception
      

  7.   

    gdsean(摇滚java) 说的是对的
    重复了显示的错误信息是:
    java.sql.SQLException: ORA-00001: unique constraint (xxx.NAME_UQ) violated 
    java.sql.SQLException: ORA-00001: unique constraint (xxx.SHORTNAME_UQ) violated 
    我希望显示给用户分别看到 “名称重复了” 和“简称重复了”
    如果必须从Exception 中分析,就得自己建立一张中英文的对照表,得到Exception后,从中英文的对照表中获得相应中文信息,感觉很麻烦,有没有更好的办法