我试图在桌子上显示所有数据,表格很好。我遇到的问题是阻止使用不同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的相同名称,而这正是我试图阻止
知道怎么防止这种情况?请帮忙。
答案 0 :(得分:3)
如果您不希望表中有多个具有相同名称的产品,则可以在名称列上添加unique
约束,例如:
ALTER TABLE items ADD CONSTRAINT name UNIQUE (name);
这会阻止名称重复的插入,从而产生MySQLIntegrityConstraintViolationException
。
另一种方法是在允许用户输入项目之前检查项目是否存在,例如:
SELECT count(*) as count FROM items WHERE name = ?
如果计数大于零,您可以向用户显示相应的错误消息。