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