模拟预订:比较Java和MySQL之间的小时,日期和课堂

时间:2018-06-17 22:20:50

标签: java mysql

美好的一天。我有一个小型Java程序,可以模拟课程表的预约。我需要预定一个教室,在特定的日期和课程开始时间以及特定的课程结束时间,如果数据库中有记录与这些参数(相同的日期,小时和课堂),你不能进行预订,但是我的ResultSet不起作用。这是我创建预订的方法(cbxs是ComboBox):

public void crearReserva(String cbx1, String cbx2, String cbx3, Date fecha, String horaInicial, String horaFinal) {
        try {
            ResultSet retorno = s.executeQuery("SELECT * FROM horarios WHERE horarios.hinicio >= '" + horaInicial + "' OR horarios.hfin <= '" + horaFinal + "' AND horarios.nomambiente = '" + cbx3 + "' AND horarios.fecha = '" + fecha + "'");
            if (!retorno.next()) {
                s.executeUpdate("INSERT INTO horarios VALUES ('" + cbx1 + "', '" + cbx2 + "', '" + cbx3 + "', '" + fecha + "', '" + horaInicial + "', '" + horaFinal + "')");
                JOptionPane.showMessageDialog(null, "¡Reserva realizada exitosamente!", "Operación Exitosa", JOptionPane.INFORMATION_MESSAGE);
            } else {
                JOptionPane.showMessageDialog(null, "No se puede reservar el " + cbx3 + " en la fecha y horas especificadas. Ya hay una reserva existente.\nRevise la tabla para hallar un espacio disponible en la formación.", "Espacio Ocupado", JOptionPane.WARNING_MESSAGE);
            }
            //retorno.beforeFirst();
        } catch (SQLException ex) {
            Logger.getLogger(ConexionMySQL.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

我没有连接问题,事实上一切正常,但它不能正常工作。如果我准确插入先前记录中的内容,我不想创建插入,但是如果开始时间或结束时间发生变化,则创建插入,不应该如此。

“Ambiente”=课堂,“Fecha”=日期,“Hora Inicio”=开始时间,“Hora Final”=最终时间,“cbx”= ComboBox

Here is how the second record has been made (between the hours of 8:00 a.m. - 11:30 a.m.) despite the fact that the first record has an interval of time between 7:00 a.m. - 12:00 p.m.

1 个答案:

答案 0 :(得分:1)

您的查询需要

"SELECT * FROM horarios WHERE horarios.hfin > '" + horaInicial + "' AND horarios.hinicio < '" + horaFinal + "' AND horarios.nomambiente = '" + cbx3 + "' AND horarios.fecha = '" + fecha + "'"

因为这是两个预订重叠的条件。

此外,您应该使用带有一堆参数的PreparedStatement,以避免SQL注入的任何风险。

相关问题