Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查数据库中是否存在日期_Java_Jdbc - Fatal编程技术网

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

Java 检查数据库中是否存在日期,java,jdbc,Java,Jdbc,我想检查输入的日期是否已被记录 我试图修复它,但它总是表明,日期已采取,即使它没有 这是刀 public static String getDate(String date) throws SQLException, ClassNotFoundException { Connection cnx; String datee; cnx = Connect.getConnection(); String req = "select date from examen

我想检查输入的日期是否已被记录

我试图修复它,但它总是表明,日期已采取,即使它没有

这是刀

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 {...}

您总是返回与传递到方法中的日期相同的日期
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 = ?"

Optional returnValue=Optional.empty();
结果集rs=st.executeQuery();
如果(rs.next()){
returnValue=Optional.of(rs.getString(“registrationdate”);
}
返回值;

您总是返回与传递到方法中的日期相同的日期
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 = ?"

Optional returnValue=Optional.empty();
结果集rs=st.executeQuery();
如果(rs.next()){
returnValue=Optional.of(rs.getString(“registrationdate”);
}
返回值;

我想,如果
examen.jsp
路径是针对已经采取的日期,那么您的方法将被重写如下。注意额外的声明-
stringladate=null&在
返回
语句中进行更改

另外,请注意
laDate=rs.getString(“日期”)中的更改,您需要按列名而不是变量进行提取。表列名是“日期”,而
date
是一个携带日期值的变量&而不是表列名

变量<代码>字符串日期未使用”,则可以将其删除

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 ;
}

我想,如果
examen.jsp
path是针对已经采取的日期,那么您的方法将被重写如下。注意额外的声明-
stringladate=null&在
返回
语句中进行更改

另外,请注意
laDate=rs.getString(“日期”)中的更改,您需要按列名而不是变量进行提取。表列名是“日期”,而
date
是一个携带日期值的变量&而不是表列名

变量<代码>字符串日期未使用”,则可以将其删除

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 ;
}


数据库中的日期是什么类型的?日期还是字符串?日期的一个问题可能是格式不同,如2019-05-26或2019年5月26日。或者可能在日期上有一个不相等的时间00:00:00。这会使查找日期变得困难。无论在methodwhich line@JBNizet
return date中发生了什么,您总是返回输入的日期:返回作为参数传递给方法的日期,无论是否执行if块。@JBNizet哦,是的,我已经初始化了一个名为datee的变量,但没有注意我将date作为返回。数据库中的date是什么类型的?日期还是字符串?日期的一个问题可能是格式不同,如2019-05-26或2019年5月26日。或者可能在日期上有一个不相等的时间00:00:00。这会使查找日期变得困难。无论在methodwhich line@JBNizet
return date中发生了什么,您总是返回输入的日期:返回作为参数传递给方法的日期,无论是否执行if块。@JBNizet哦,是的,我已经初始化了一个名为datee的变量,但没有注意将日期作为返回。不,我不能,因为我不知道该方法的预期行为。对于我来说,不清楚如果没有找到符合条件的记录,应该返回什么。那么“输入日期”应该返回还是应该为空(那么最好返回一个可选的)。谢谢,我解决了这个问题,它可以工作,但是当我输入一个执行日期时会出现错误,例如,如果我输入“2019-05-25”,它会给出java.sql.SQLException:Column'2019-05-25'找不到是的,我的错误。rs.getString尝试获取列值,而inputDate不是列名。我改变了这个例子。使用更好的名字也是明智的。数据库中的“date”等名称可以是特殊关键字(取决于数据库)。它大约是“rs.getString(date)”;现在应该在guillemethow之间让系统记住重定向后用户输入的数据。我不能,因为我不知道该方法的预期行为。对于我来说,不清楚如果没有找到符合条件的记录,应该返回什么。那么“输入日期”应该返回还是应该为空(那么最好返回一个可选的)。谢谢,我解决了这个问题,它可以工作,但是当我输入一个执行日期时会出现错误,例如,如果我输入“2019-05-25”,它会给出java.sql.SQLException:Column'2019-05-25'找不到是的,我的错误。rs.getString尝试获取列值,而inputDate不是列名。我改变了这个例子。使用更好的名字也是明智的。数据库中的“date”等名称可以是特殊关键字(取决于数据库)。它大约是“rs.getString(date)”;为了让系统记住重定向后用户输入的数据,现在应该在guillemethow之间。谢谢,我解决了这个问题,它可以工作,但是当我输入一个日期时会出现错误,例如,如果我输入“2019-05-25”,它会给出java.sql.SQLException:在我的代码中找不到列“2019-05-25”,请注意行
laDate=rs.getString(“日期”);在日期前后加上双引号,使其成为列名而不是列值。现在,我想让系统在重定向后记住用户输入的数据。你能帮忙吗?这是通过会话完成的。您已经在会话中设置了一个属性,可以设置任意多个。是的,我已经设置了会话,但我不知道如何在这种情况下使用它“保存输入”谢谢,我解决了这个问题,它可以工作,但当我输入拍摄日期时会出现错误,例如,如果我输入“2019-05-25”它给出了java.sql.SQLException:在我的代码中找不到“2019-05-25”列,注意行
laDate=rs.getString(“日期”)在日期前后加上双引号,使其成为列名而不是列值。现在,我想让系统在重定向后记住用户输入的数据。你能帮忙吗?这是通过会话完成的。你已经准备好了