2016-02-26 8 views
0

Я пишу этот раздел кода, чтобы сравнить запрос с базой данных с текущей датой, чтобы узнать, проверен ли студент в классе. Я могу привести их в строку, и они выглядят одинаково, но они по-разному различаются на уровне байтов, и оператор 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; 
} 
+0

Вы не можете сравнивать строки, используя '=='. они являются объектами, вы должны использовать метод equals(). – jtahlborn

ответ

0

Изменить обе даты в строки, используя простой формат даты, а затем сравнить.

SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-MM-dd-hh.mm.ss");

Смежные вопросы