PL/SQL/Java-SQL为循环选择if语句和列表

PL/SQL/Java-SQL为循环选择if语句和列表,java,sql,Java,Sql,就在那时,我创建了一个应用程序,为学生创建一个新的路线预订。 这应该让他们使用包含这些时间的数据库来计算冲突时间 e、 g.学生预定12:00的考试,程序将检查该时间附近的任何其他测试,然后检查碰撞时间,如果发生碰撞,将在开始时间增加5分钟,然后重试。这就是我的目标 我知道这远非完美或正确,但这就是我来这里的原因 预约班 public class Booking { private int bookingId; private String route; private

就在那时,我创建了一个应用程序,为学生创建一个新的路线预订。 这应该让他们使用包含这些时间的数据库来计算冲突时间

e、 g.学生预定12:00的考试,程序将检查该时间附近的任何其他测试,然后检查碰撞时间,如果发生碰撞,将在开始时间增加5分钟,然后重试。这就是我的目标

我知道这远非完美或正确,但这就是我来这里的原因

预约班

public class Booking
{
    private int bookingId;
    private String route;
    private int startTime;
    private String bookingDate;

    public Booking()
    {
        bookingId = 0000;
        route = "No Route Entered";
        startTime = 0000;
        bookingDate = "No Date entered";
    }

    public int getBookingId()
    {
        return bookingId;
    }

    public String getRoute()
    {
        return route;
    }

    public int getStartTime()
    {
        return startTime;
    }

    public String getBookingDate()
    {
        return bookingDate;
    }

    public void setBookingId(int bookingId)
    {
        this.bookingId = bookingId;
    }

    public void setRoute(String route)
    {
        this.route = route;
    }

    public void setStartTime(int startTime)
    {
        this.startTime = startTime;
    }

    public void setBookingDate(String bookingDate)
    {
        this.bookingDate = bookingDate;
    }

    public Booking(int bookingId, String route, int startTime, String bookingDate)
    {
        setBookingId(bookingId);
        setRoute(route);
        setStartTime(startTime);
        setBookingDate(bookingDate);
    }

    public String toString()
    {
        return "BookingId: " + getBookingId() + "\nRoute: " + getRoute() + "\nStart Time: " + getStartTime() +
                "\nBooking Date: " + getBookingDate();
    }
}
主类

import java.sql.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args) throws SQLException {
        //<editor-fold defaultstate="collapsed" desc="Creates new Student and booking">

        Student s1 = new Student();
        Booking b1 = new Booking();
        s1.setStudentId(Integer.parseInt(JOptionPane.showInputDialog("Enter ID for Student: [0001]")));
        s1.setFname(JOptionPane.showInputDialog("Enter first name of Student: "));
        s1.setLname(JOptionPane.showInputDialog("Enter last name of Student: "));
        s1.setAddress(JOptionPane.showInputDialog("Enter address for Student: "));
        s1.setPhoneNo(JOptionPane.showInputDialog("Enter phone number for Student: "));
        s1.setOtherDetails(JOptionPane.showInputDialog("Enter other details for Student: [Glasses?]"));

        b1.setBookingId(0002);
        b1.setStartTime(Integer.parseInt(JOptionPane.showInputDialog("Enter Start time for Booking: [1200]")));
        b1.setBookingDate(JOptionPane.showInputDialog("Enter Date for Booking: [01-JAN-12]"));

       int records = 0;

       List <Booking> allBookings = new ArrayList<Booking>();

       allBookings.add(b1);

       for(Booking b:allBookings) {

           JOptionPane.showMessageDialog(null, b1.getStartTime());//Get Start Time from user

           //<editor-fold defaultstate="collapsed" desc="To select max time of all routes">
           try {
               Class.forName("oracle.jdbc.driver.OracleDriver");
               //load the oracle driver...needs to be in classes folder in jre folder
           } catch (ClassNotFoundException e) {
               System.out.println(
                       " Can't find class oracle.jdbc.driver.OracleDriver");
               System.exit(1);
           }

           Connection conn = null;
           //new connection object
           Statement stmtMax = null;
           //new statemnt object
           ResultSet maxTime = null;
           //new record set object
           try {
               conn = DriverManager.getConnection("jdbc:oracle:thin:@oracle.tralee.ie:1521:orcl",
                       "*", "*");
               stmtMax = conn.createStatement();
               // create the statement for this connection
               //</editor-fold>

               maxTime = stmtMax.executeQuery(
               "SELECT MAX(LENGTH) FROM ROUTE");
               // get the results of select query and store in recordset object
               while (maxTime.next()) {
                   // move to first/next record of recordset
                   JOptionPane.showMessageDialog(null, "Check: Max time of all routes: " + maxTime.getString(1));
                   // output next record using string format
               }
               //<editor-fold defaultstate="collapsed" desc="Error handling for Select Statement">
               maxTime.close();
               maxTime = null;
               stmtMax.close();
               stmtMax = null;
               conn.close();
               conn = null;

           } catch (SQLException e) {
               System.out.println(" A SQL error: " + e.getMessage());
           } finally {
               if (maxTime != null) {
                   try {
                       maxTime.close();
                   } catch (SQLException ignore) {
                   }
               }

               if (stmtMax != null) {
                   try {
                       stmtMax.close();
                   } catch (SQLException ignore) {
                   }
               }

               if (conn != null) {
                   try {
                       conn.close();
                   } catch (SQLException ignore) {
                   }
               }
           }
          // </editor-fold>
          //<editor-fold defaultstate="collapsed" desc="To select all bookings within a time">
           try {                   Class.forName("oracle.jdbc.driver.OracleDriver");
               //load the oracle driver...needs to be in classes folder in jre folder
           } catch (ClassNotFoundException e) {
               System.out.println(
                       " Can't find class oracle.jdbc.driver.OracleDriver");
               System.exit(1);
           }
最后一个错误我还不太在意,我知道每次在循环中创建一个新连接是不好的,我稍后会对其进行排序。但现在,我要问的是

1) 为什么这份声明不会:

SELECT * FROM BOOKINGS WHERE" +
 b1.getStartTime() + "<=" + b1.getStartTime() + "-" + maxTime +
 "AND" + b1.getStartTime() + ">=" + b1.getStartTime() + "+" + maxTime);
3)对于这个语句,我希望它给R赋值X值,基本上说 对于每个R[X值],那么for语句的主体是什么

for(int X = 1; X < records; X++) {

                for(r[X]) {

首先,我想你应该看看mysql的时间函数。更具体地说是addtime函数

我不确定要验证的列的确切类型,但查询似乎无法验证该列

SELECT * FROM BOOKINGS WHERE" + b1.getStartTime() + "<=" + b1.getStartTime() + "-" + maxTime + "AND" + b1.getStartTime() + ">=" + b1.getStartTime() + "+" + maxTime);

首先,我想你应该看看mysql的时间函数。更具体地说是addtime函数

我不确定要验证的列的确切类型,但查询似乎无法验证该列

SELECT * FROM BOOKINGS WHERE" + b1.getStartTime() + "<=" + b1.getStartTime() + "-" + maxTime + "AND" + b1.getStartTime() + ">=" + b1.getStartTime() + "+" + maxTime);

哦,是的,忘了加表了,我知道时间现在到处都是,但我现在把它们当作4位数,直到我以后把它改成时间。我会用预订表更新这个问题,谢谢你的帮助哦,是的,忘了添加表了,我知道时间现在到处都是,但是我现在把它们当作4位数,直到我以后把它改成时间。我会在预订表中更新这个问题,谢谢你的帮助
for(int X = 1; X < records; X++) {

                for(r[X]) {
    CREATE BOOKING
      (
        BOOKINGID NUMBER(4,0),
        STARTTIME NUMBER(4,0),
        BOOKINGDATE DATE,
        EXAMINERID NUMBER(4,0),
        STUDENTID  NUMBER(4,0),
        ROUTEID    NUMBER(4,0),
        CONSTRAINT BOOKING_PK PRIMARY KEY (BOOKINGID)
CONSTRAINT EXAMINER_FK FOREIGN KEY (EXAMINERID) REFERENCES EXAMINER,
CONSTRAINT STUDENT_FK FOREIGN KEY (STUDENTID) REFERENCES STUDENT,
CONSTRAINT ROUTE_FK FOREIGN KEY (ROUTEID) REFERENCES ROUTE);
SELECT * FROM BOOKINGS WHERE" + b1.getStartTime() + "<=" + b1.getStartTime() + "-" + maxTime + "AND" + b1.getStartTime() + ">=" + b1.getStartTime() + "+" + maxTime);
select * from bookings where12<=12-5and12>=12+5
PreparedStatement prest;
Connection conn2 = DriverManager.getConnection("jdbc:");//set you jdbc url
String sql = "select * from bookings where bookingdate = ? and starttime between ? and ?";
prest = con.prepareStatement(sql);
prest.setDate(1,b1.getBookingDate());
prest.setInt(2,b1.getStartTime()-5);
prest.setInt(3,b1.getStartTime()+5);
ResultSet rs1 = prest.executeQuery();
while(rs1.hasNexT())
    //extract data here