如何防止在mysql Java上使用不同ID获得相同的名称
我试着在一张表上显示所有的数据,这张表很好。我遇到的问题是阻止使用不同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
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 = ?
如果计数大于零,则可以向用户显示相应的错误消息