我有用于房间类型的组合框和用于到达和离开的2个文本框, 我想要的是当抵达= 2017-09-01 - 出发= 2017-09-05已经存在,客户将无法在同一类型的房间中选择2017-09-02至2017-09-05 < / p>
String sql = "SELECT * FROM reservation WHERE room=? and arrival=? and
departure=?";
try{
pst=conn.prepareStatement(sql);
pst.setString(1, ComboBox.getSelectedItem().toString());
pst.setString(2, txtArrival.getText());
pst.setString(3, txtDeparture.getText());
rs=pst.executeQuery();
if(rs.next()){
// the customer needs to choose other date or room
}
else{
// continue to fill up the form below
}
}
答案 0 :(得分:0)
将日期值存储在日期数据类型的列中,而不是文本中。
使用适当的对象而不仅仅是字符串。
LocalDate arrival = LocalDate.parse( "2017-09-01" ) ;
将该对象传递给PreparedStatement
。
myPreparedStatement.setObject( 2 , arrival ) ;
对于ResultSet
。
LocalDate arrival = myResultSet.getObject( 2 , LocalDate.class ) ;
修复SQL查询的逻辑。你不应该寻找确切的日期匹配。
Stack Overflow已经多次覆盖了所有这些。发布前彻底搜索。