检查java数据库中是否存在值(Accountnumber)

时间:2017-02-25 10:05:12

标签: java sql jdbc

我在一个名为savings的类中有以下方法,我使用JDBC数据库来保存和查看java应用程序上的数据。

我的数据库 ZaiLab 中有SAVINGS表,其中包含以下字段:

ls -1p | grep -P '(?=/$)'

并且用户将使用JOPtionPane输入以下VALUE。

ID,ACCOUNTNUMBER,CUSTOMERNAME,BALANCE,MINMUM)

应用程序应该检查用户输入的 accountNumber 是否已经存在,如果不存在则应该将记录保存到表SAVINGS,如果是,则应显示相应的消息。 "帐户已存在"。

(id,accountNumber,customername,balance,minmum);

1 个答案:

答案 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上定义唯一约束,如果记录已存在,则执行插入并处理约束违规。