我要检查输入的日期是否已过。
我试图修复它,但它始终指示日期已过,即使没有。
这是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 {...}
答案 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 ;
}