如何防止在mysql Java上使用不同的ID获取相同的名称

时间:2017-02-08 13:04:50

标签: java mysql

我试图在桌子上显示所有数据,表格很好。我遇到的问题是阻止使用不同ID的同名。这是我的代码

private void AddbtActionPerformed(java.awt.event.ActionEvent evt) {                                      
    String id = idFld.getText() ;
    String item = ADDfld.getText();
    String amount = AMOUNTfld.getText();
          try {

    con=DriverManager.getConnection("jdbc:mysql://localhost:3306/isdb","root","");

   String query = "Insert into item (id,NAME,AMOUNT) values (?,?,?)";

     pst = con.prepareStatement(query);

      pst.setInt(1, Integer.parseInt(id));
     pst.setString(2, item);
     pst.setString(3,amount);
      pst.execute();

} catch (SQLException ex ) {

    JOptionPane.showMessageDialog(null, ex);

 }

        ADDfld.setText("");
         idFld.setText("");
        AMOUNTfld.setText("");
        updateCombo();
         update_Table();

我尝试创建数据,但它允许使用不同ID的相同名称,而这正是我试图阻止

enter image description here

知道怎么防止这种情况?请帮忙。

1 个答案:

答案 0 :(得分:3)

如果您不希望表中有多个具有相同名称的产品,则可以在名称列上添加unique约束,例如:

ALTER TABLE items ADD CONSTRAINT name UNIQUE (name);

这会阻止名称重复的插入,从而产生MySQLIntegrityConstraintViolationException

另一种方法是在允许用户输入项目之前检查项目是否存在,例如:

SELECT count(*) as count FROM items WHERE name = ?

如果计数大于零,您可以向用户显示相应的错误消息。