Das Programm, das ich geschrieben habe, überprüft die verfügbaren Zimmer in einem Hotel. Ich benutzte JCalendar für den Benutzer, um die Daten und JTable einzugeben, um die verfügbaren Räume anzuzeigen. Das Problem ist, dass, wenn ich auf die Schaltfläche Verfügbarkeit prüfen klicke, es eine SQL-Ausnahme auslöst.Überprüfen der Verfügbarkeit von Zimmern mit JTable und JCalendar löst SQL-Ausnahme aus
Hier sind die Code-Schnipsel:
public class Room_Availability extends JFrame {
//Note: Didn't add codes about instantiating panels, setting layouts and all
JLabel arr_date= new JLabel("Arrival Date:");
JLabel dep_date= new JLabel("Departure Date:");
JButton chk_btn= new JButton("Check Availability");
JDateChooser arrival = new JDateChooser();
JDateChooser departure = new JDateChooser();
JTable CheckAvail= new JTable();
Room_Availability(){
chk_btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
CheckAvailActionPerformed(evt);
}
});
}
private void CheckAvailActionPerformed(java.awt.event.ActionEvent evt) {
ResultSet rs = null;
Connection conn = null;
Statement stmt = null;
try {
// new com.mysql.jdbc.Driver();
Class.forName("com.mysql.jdbc.Driver").newInstance();
String connectionUrl = "jdbc:mysql://localhost:3306/testing?autoReconnect=true&useSSL=false";
String connectionUser = "root";
String connectionPassword = "admin";
conn = DriverManager.getConnection(connectionUrl, connectionUser,
connectionPassword);
stmt = conn.createStatement();
String query= "select * from room as ro" +
"where ro.room_id not in "+
" ("+
"select re.room_no"+
" from testing.booking as re "+
"where (arrival_date >= ? and departure_date < ?)"+
"or (departure_date >= ? and arrival_date < ?)"+
")";
PreparedStatement pStmt = (PreparedStatement) conn.prepareStatement(query);
java.util.Date utilDate = arrival.getDate();
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
java.util.Date utilDate1 = departure.getDate();
java.sql.Date sqlDate1 = new java.sql.Date(utilDate1.getTime());
pStmt.setDate(1, sqlDate);
pStmt.setDate(2, sqlDate1);
pStmt.setDate(3, sqlDate);
pStmt.setDate(4, sqlDate1);
rs = pStmt.executeQuery();
CheckAvail.setModel(DbUtils.resultSetToTableModel(rs));
} catch (Exception e) {
e.printStackTrace();
}
}
}
Hier ist, wie die GUI wie folgt aussieht:
Wenn ich ausführen die Abfrage (mit den gleichen Daten wie ich auf dem JCalendar eingeben) auf MySQL diese Datenbank ist, was angezeigt wird, sollte auf dem JTable angezeigt:
Hier sind die Fehler ich erhalte:
Es gibt 4 questio n markiert Ihre Anfrage, dh es benötigt 4 Parameter; Sie geben nur 2 Parameter an. –
Ich habe die Zeile '' oder (departure_date> =? Und arrival_date ) "+" Auskommentiert, aber jetzt bekomme ich 'MySQLSyntaxErrorException' – Tia