Bir otelde bulunan odalar için kontrol ettiğim program. Kullanıcıların tarihleri girmek için JCalendar ve mevcut odaları görüntülemek için JTable'ı kullandım. Sorun şu ki, Kullanılabilirliği Kontrol Et düğmesine tıkladığımda, bir SQL İstisnası atıyor. İşteJTable ve JCalendar kullanarak oda kullanılabilirliğini kontrol etmek SQL istisnası atar
kod parçacıkları şunlardır:
İştepublic 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();
}
}
}
olduğunu GUI nasıl görüneceği gibi: MySQL üzerine (ı jCalendar üzerinde girerken aynı tarihlerde birlikte) Ben sorgu çalıştırdığınızda
alıyorum hataları şunlardır: Bu veritabanı görüntülenir ve JTable görüntülenen gereken budur
4 questio var Sorgunuzdaki n işaretleri, yani 4 parametre gerektirir; Sadece 2 parametre belirtebilirsiniz. –
“” veya (departure_date> =? Ve arrival_date ) "+' Satırlarını yorumladım ama şimdi "MySQLSyntaxErrorException" – Tia