我在一个名为savings的类中有以下方法,我使用JDBC数据库来保存和查看java应用程序上的数据。
我的数据库 ZaiLab 中有SAVINGS表,其中包含以下字段:
ls -1p | grep -P '(?=/$)'
并且用户将使用JOPtionPane输入以下VALUE。
ID,ACCOUNTNUMBER,CUSTOMERNAME,BALANCE,MINMUM)
应用程序应该检查用户输入的 accountNumber 是否已经存在,如果不存在则应该将记录保存到表SAVINGS,如果是,则应显示相应的消息。 "帐户已存在"。
(id,accountNumber,customername,balance,minmum);
答案 0 :(得分:2)
现在,您正在从SAVINGS
中选择所有行,并尝试为没有“新”行的每一行插入一个新帐户。帐号。
相反,您应该只选择具有新帐号的行,并在它不存在时插入。
您还应该使用预准备语句来保护您免受SQL注入。
例如:
try (PreparedStatement checkAccountExists = con.prepareStatement(
"SELECT 1 FROM SAVINGS WHERE ACCOUNTNUMBER = ?")) {
checkAccountExists.setInt(1, accountNumber);
try (ResultSet rs = checkAccountExists.executeQuery()) {
if (rs.next()) {
// handle account already exists
} else {
try (PreparedStatement insert = con.prepareStatement(
"INSERT INTO SAVINGS(ID, ACCOUNTNUMBER, CUSTOMERNAME, BALANCE, MINMUM) VALUES (?, ?, ?, ? , ?)")) {
insert.setInt(1, id);
insert.setInt(2, accountNumber);
insert.setString(3, customername);
insert.setInt(4, balance);
insert.setInt(5, minmum);
insert.executeUpdate();
}
}
}
}
或者,您可以在数据库中的ACCOUNTNUMBER
上定义唯一约束,如果记录已存在,则执行插入并处理约束违规。