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

如何防止在mysql Java上使用不同ID获得相同的名称,java,mysql,Java,Mysql,我试着在一张表上显示所有的数据,这张表很好。我遇到的问题是阻止使用不同ID的相同名称。这是我的代码 private void AddbtActionPerformed(java.awt.event.ActionEvent evt) { String id = idFld.getText() ; String item = ADDfld.getText(); String amount = AMOU

我试着在一张表上显示所有的数据,这张表很好。我遇到的问题是阻止使用不同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的相同名称,这正是我试图阻止的


你知道怎么预防吗?请提供帮助。

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

ALTER TABLE items ADD CONSTRAINT name UNIQUE (name);
这将防止名称重复的插入,从而导致
MySQLIntegrityConstraintViolationException

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

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

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

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

ALTER TABLE items ADD CONSTRAINT name UNIQUE (name);
这将防止名称重复的插入,从而导致
MySQLIntegrityConstraintViolationException

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

SELECT count(*) as count FROM items WHERE name = ?
如果计数大于零,则可以向用户显示相应的错误消息