检查数据库中是否存在日期

时间:2019-05-26 09:41:25

标签: java jdbc

我要检查输入的日期是否已过。

我试图修复它,但它始终指示日期已过,即使没有。

这是DAO

public static String getDate(String date) throws SQLException, ClassNotFoundException {
    Connection cnx;
    String datee;
    cnx = Connect.getConnection();

    String req = "select date from examen where date=?";
    PreparedStatement st = cnx.prepareStatement(req);
    st.setString(1, date);
    ResultSet rs = st.executeQuery();
    if (rs.next()) {
        String laDate = rs.getString(date);

    }
    return date;

}

这是servlet

String dd = ExamDAO.getDate(date);

if (dd != null) {
                        String datePrise = "la date est prise ";
                        request.getSession().setAttribute("datePrise", datePrise);
                        System.out.println("priiiiise ");
                        response.sendRedirect("examen.jsp");
                    } else {...}

2 个答案:

答案 0 :(得分:2)

您总是返回与传递给方法相同的日期。 laDate未使用,因此您的方法中没有任何有效的逻辑。

可能类似于:

\\ I suggest a better query with another name for the 'date' column (needs db change), because using column 
\\ names like date can cause problems (reserved keywords/functions in some databases)
"select registrationdate from examen where registrationdate = ?"
String returnDate = inputDate; // inputDate = date argument from method with better name
ResultSet rs = st.executeQuery();
if (rs.next()) {
   returnDate = rs.getString("registrationdate");
}
return returnDate;

Optional<String> returnValue = Optional.empty();
ResultSet rs = st.executeQuery();
if (rs.next()) {
   returnValue = Optional.of(rs.getString("registrationdate"));
}
return returnValue;

答案 1 :(得分:0)

我猜想,如果examen.jsp路径用于已使用的日期,则您的方法将按以下方式重写。注意额外的声明-String laDate =null;return语句中的更改。

此外,请注意laDate = rs.getString("date");中的更改,您需要按列名而不是变量来提取。表列名称是“日期”,而date是一个带有日期值的变量,而不是表列名称。

代码中的变量String datee;未使用,您可以将其删除。

public static String getDate(String date) throws SQLException, ClassNotFoundException {
    Connection cnx;
    String laDate =null;
    String datee;
    cnx = Connect.getConnection();
    String req = "select date from examen where date=?";
    PreparedStatement st = cnx.prepareStatement(req);
    st.setString(1, date);
    ResultSet rs = st.executeQuery();
    if (rs.next()) {
         laDate = rs.getString("date");

    }
    return laDate ;
}