2013-10-07 3 views
4

Bon j'ai donc actuellement une base de données qui a les temps suivants:La base de données ne renvoie pas les bonnes valeurs?

id 1 startTime 09/09/2013 15: 05: 10.0 endTime 09/09/2013 15: 05: 10.0

id 2 startTime 2013-09-09 15: 09: 54.0 endTime 2013-09-09 15: 09: 54.0

id 3 startTime 2013-09-09 15: 20: 46.0 endTime 2013-09-09 15:20: 46,0

id 4 startTime 09/09/2013 15: 21: 06,0 endTime 09/09/2013 15: 21: 06,0

id 5 startTime 09/09/2013 15: 21: 34,0 endTime 09/09/2013 15: 21: 34,0

id 6 startTime 09/09/2013 15: 22: 34,0 endTime 09/09/2013 15 : 22: 34,0

id 7 startTime 09/09/2013 15: 23: 06.0 endTime 09/09/2013 15: 25: 34,0

maintenant quand je lance ma recherche par la méthode de temps situé ici:

@Override 
public ArrayList<AppointmentAccess> searchByTime(Timestamp startTime, 
     Timestamp endTime) throws SQLException { 
    ArrayList<AppointmentAccess> appointmentList = new ArrayList<AppointmentAccess>(); 

    String preparedQuery = "Select DISTINCT * From Appointments where startTime <= appointments.endTime AND endTime >= appointments.startTime"; 

    // Connect to database 
    try (Connection connection = DriverManager.getConnection(url, user, 
      password); 

    // Run SQL 
    PreparedStatement ps = connection.prepareStatement(preparedQuery); 

    // Get SQL results 
    ResultSet query = ps.executeQuery();) { 

     while (query.next()) { 
      AppointmentAccess appointment = new AppointmentAccess(); 
      appointment.setStartTime(query.getTimestamp("starttime")); 
      appointment.setEndTime(query.getTimestamp("endtime")); 

       appointment.setAlarmReminder(query 
         .getBoolean("alarmreminder")); 
       appointment.setAllDay(query.getBoolean("allday")); 
       appointment.setDetails(query.getString("details")); 
       appointment.setLocation(query.getString("location")); 
       appointment.setTitle(query.getString("title")); 
       appointmentList.add(appointment); 
     } 
    } 
    // Returns a List of all the contacts 
    return appointmentList; 
} 

mes méthodes de test "searchTooLate, searchTooEarly et searchTimeBetweenAppointments "continue d'échouer. Les temps j'envoie ces méthodes sont:

startTime: "09/09/2013 16:05:09" endTime: "09/09/2013 16:22:35"

startTime: "09/09/2013 15: 24: 06,0" endTime: "09/09/2013 15: 25: 30,0"

startTime: "09/08/2013 14:05:09" endTime: "2013 -08-09 16:22:35 "

Qu'est-ce que je fais mal?

+0

Si vous ne formatez pas correctement les personnes de données, moins de personnes liront votre question. –

Répondre

0

Tenir compte de cette partie de votre code: String preparedQuery = "Select DISTINCT * From Appointments where startTime <= appointments.endTime AND endTime >= appointments.startTime";

Comment proposez-vous que cela va changer? Vous comparez startTime à "Appointments.editTime" à chaque fois (guillemets à dessein). Ce qui provoquerait l'échec de la requête car Appointments.editTime n'est pas une variable dans la base de données.

Peut-être que vous vouliez ..." + Appointments.startTime.ToString() + "... Ce qui est toujours la mauvaise façon de le faire, mais cela rendra votre code fonctionnel. Considérez un PROC et des paramètres.

Questions connexes