Java Mysql完整性约束冲突异常

Java Mysql完整性约束冲突异常,mysql,swing,exception,constraints,unique-constraint,Mysql,Swing,Exception,Constraints,Unique Constraint,我的Swing应用程序很少抛出异常。我试图捕获完整性约束冲突异常并显示消息“重复ID”。但是当发生这种情况时,没有在这里捕获它:catch(MySQLIntegrityConstraintViolationException-ex),它会转到catch(SQLException-ex)。我想做的是,捕获完整性冲突异常并显示用户友好的消息,而不是来自ex.getMessage()的技术消息。我该怎么做 ShippmentTransfer shipTrns = new S

我的Swing应用程序很少抛出异常。我试图捕获完整性约束冲突异常并显示消息“重复ID”。但是当发生这种情况时,没有在这里捕获它:catch(MySQLIntegrityConstraintViolationException-ex),它会转到catch(SQLException-ex)。我想做的是,捕获完整性冲突异常并显示用户友好的消息,而不是来自ex.getMessage()的技术消息。我该怎么做

              ShippmentTransfer shipTrns = new ShippmentTransfer(shipID, GIN, issueDate, ToStore, itemName, Qty, Driver, Vehicle);
                    int res = ShipmentTansController.addShipGIN(shipTrns);
                    if (res > 0) {
                          JOptionPane.showMessageDialog(null, "Record Added");
                          resetAll();
                    }
              } catch (DataIntegrityViolationException ex) {
                    JOptionPane.showMessageDialog(null, "Duplicate ID");

              } catch (ClassNotFoundException ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage());
              } 
              catch (SQLException ex) {
                    JOptionPane.showMessageDialog(null, ex.gets);
              }
        }
你不能使用

MySQLIntegrityConstraintViolationException  directly.
因为java中没有使用该名称的异常

试试这个

try {

}
catch (DataIntegrityViolationException ex) {
    .....
}
然后使用ex获取错误代码。然后将其进行比较

您不能使用

MySQLIntegrityConstraintViolationException  directly.
因为java中没有使用该名称的异常

试试这个

try {

}
catch (DataIntegrityViolationException ex) {
    .....
}

然后使用ex获取错误代码。然后比较它

为了捕获特定的SQLException,需要使用getSQLState()方法与SQl状态进行比较。例如:数据完整性冲突的SQl状态23

 catch (SQLException ex) {
                    if (ex.getSQLState().startsWith("23")) {
                          JOptionPane.showMessageDialog(null, "Duplicate");
                    } 
              }

为了捕获特定的SQLException,需要使用getSQLState()方法与SQl状态进行比较。例如:数据完整性冲突的SQl状态23

 catch (SQLException ex) {
                    if (ex.getSQLState().startsWith("23")) {
                          JOptionPane.showMessageDialog(null, "Duplicate");
                    } 
              }

对于以后的检查, 您可以选择将实例类型检查为:

try {
...
} catch (Exception e) {

    if (e instanceof SQLIntegrityConstraintViolationException) {
          // duplicate record or alike problem
    }
}
对于稍后检查的人, 您可以选择将实例类型检查为:

try {
...
} catch (Exception e) {

    if (e instanceof SQLIntegrityConstraintViolationException) {
          // duplicate record or alike problem
    }
}

谢谢你的回复。那么如何捕获完整性约束冲突异常?你有什么想法吗?尝试使用ex获取异常的名称。然后在引发异常时使用comparetry调试ex。当IntegrityVoilationException引发和其他引发时它包含什么。确定。我会试着用那种方法。最后我设法解决了。我使用方法getSQLState()生成特定的错误代码。例23:数据完整性违规。if(例如getSQLState().startsWith(“23”)){无论如何,我感谢你的努力帮助我。谢谢你的回复。那么我如何捕获完整性约束冲突异常?你有什么想法吗?尝试使用ex获取异常的名称。然后在引发异常时使用comparetry调试ex。当IntegrityVoilationException引发和其他引发异常时它包含什么。当然。我会尝试我使用方法getSQLState()生成特定的错误代码。例如,数据完整性冲突。如果(例如,getSQLState().startsWith(“23”){无论如何,我感谢您的帮助。