【问题标题】:Delete from DB in Java在 Java 中从数据库中删除
【发布时间】:2021-09-20 04:46:12
【问题描述】:

我想删除数据库中的一行,它可以工作,但问题是:

  • 如果我输入数据库中存在的值,它将被删除,并收到一条消息“您的预订已成功取消”

  • 但如果我输入 DB 中不存在的值,我也会收到相同的消息。如果条件不起作用,为什么?

      String sql = "delete from vaccines.patients where idNum = ?";
      String res = "Your Booking is successfully canceled";
      PreparedStatement state;
    
      try {
          state = con.prepareStatement(sql);
          state.setString(1, member.getIdNum());
          if (member.getIdNum().equals(null)) {
              res = "Enter id";
          }
    
          state.executeUpdate();
      } catch (SQLException e) {
          e.printStackTrace();
          res="Your Booking is not successfully canceled";
      }
    

【问题讨论】:

  • 无论是否成功更新任何行,delete 语句都会成功。在 delete 语句上有一个不匹配的 where 子句并不是错误。查看 PreparedStatement.executeUpdate 的 Javadoc 并注意其返回值。

标签: java mysql sql jdbc


【解决方案1】:

您必须检查受影响的行数,因为不影响任何行的更新语句不会出错。

例如

int rowCount = state.executeUpdate();

if (rowCount == 0) {
    throw ...;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    相关资源
    最近更新 更多