Java 如何防止用户向MySQL数据库中添加重复条目?
我正在使用Java开发一个库存数据库程序。我编写了一个向数据库添加新产品和数量的方法。我一直在思考如何防止用户向数据库中添加重复条目。 如果用户输入的名称已存在于数据库中,程序应显示错误消息并再次显示主菜单。程序不应要求用户再次输入数据。程序不应替换现有条目。 提前谢谢Java 如何防止用户向MySQL数据库中添加重复条目?,java,mysql,database,Java,Mysql,Database,我正在使用Java开发一个库存数据库程序。我编写了一个向数据库添加新产品和数量的方法。我一直在思考如何防止用户向数据库中添加重复条目。 如果用户输入的名称已存在于数据库中,程序应显示错误消息并再次显示主菜单。程序不应要求用户再次输入数据。程序不应替换现有条目。 提前谢谢 public static void addData() { try (Connection conn = DriverManager.getConnection(db_url, user, password)) {
public static void addData() {
try (Connection conn = DriverManager.getConnection(db_url, user, password)) {
String product = stringInput("Please enter the name of the product to store in inventory");
int quantity = intInput("Please enter the quantity of the product");
String addProduct = "INSERT INTO inventory VALUES (?,?)";
PreparedStatement insertProduct = conn.prepareStatement(addProduct);
insertProduct.setString(1, product);
insertProduct.setInt(2, quantity);
insertProduct.executeUpdate();
conn.close();
} catch(SQLException sqle){
sqle.printStackTrace();
System.exit(-1);
}
}
您必须首先查询库存表,以检查产品名称是否已经存在,类似这样 “从清单中选择i.id,其中名称=?”
然后用if子句检查查询是否有结果,如果为true,则执行任何需要的操作,如showererror…您可以在数据库中定义唯一约束。然后,如果添加了重复条目,它将抛出一个
SQLIntegrityConstraintViolationException
。捕获异常并处理应用程序中的错误
可能不适用于您,但仅供参考
spring数据
公开了org.springframework.dao.DataIntegrityViolationException
,以实现相同的功能。当遇到相同的问题时,spring数据包装下面的异常并重新抛出一个DataIntegrityViolationException
,以便客户端可以使用@ControllerAdvice
在这种情况下,在表中创建一个id列,该列应该是唯一的或主键。并处理异常SQLIntegrityConstraintViolationException
以在应用程序显示屏上显示错误消息。您可以在输入新数据之前搜索整个数据库。如果找到了,您可以将其保留最可靠的方法是在数据库级别使用唯一的约束。所有其他措施都会受到影响。使用密钥限制重复条目,如使用唯一。非常感谢!这是非常有帮助的!非常感谢你的帮助,我成功了!