Я пишу этот раздел кода, чтобы сравнить запрос с базой данных с текущей датой, чтобы узнать, проверен ли студент в классе. Я могу привести их в строку, и они выглядят одинаково, но они по-разному различаются на уровне байтов, и оператор if все еще возвращает false. Что может быть сделано?Сравнивая java.util.date с java.sql.date unucessfully
Также это не работает.
java.sql.Date date = new Date();
Это дает ошибку, поэтому я попытался изменить формат на .sql.Date с помощью первых двух строк. Это не помогло, но я оставил его там, чтобы показать, что я пробовал.
здесь код
public boolean checkTodaysAttendance(int ID){
//date stuff
java.util.Date date = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
//System.out.println(sqlDate);
boolean attend = false;
try {
PreparedStatement statement = con.prepareStatement("SELECT Date FROM attendance WHERE ID="+ID);
rs1 = statement.executeQuery();
while(rs1.next()) {
//System.out.println(rs1.getDate("Date"));
if (rs1.getDate("Date").toString().trim(). == sqlDate.toString().trim()) { //my problem is on this line
attend = true; //string don't equal at a byte level
}
}
}catch(Exception ex){
System.out.println(ex);
}
//System.out.println(attend);
return attend;
}
Вы не можете сравнивать строки, используя '=='. они являются объектами, вы должны использовать метод equals(). – jtahlborn