Java和MySQL查询日期

Java和MySQL查询日期,java,mysql,date,Java,Mysql,Date,我的Java代码如下: public void FillCombo_Disp(){ java.sql.Date fromDate = new java.sql.Date(jDateChooser_Date1.getDate().getTime()); java.sql.Date toDate= new java.sql.Date(jDateChooser_Date2.getDate().getTime()); String space = jComboBox_Space.

我的Java代码如下:

public void FillCombo_Disp(){
    java.sql.Date fromDate = new java.sql.Date(jDateChooser_Date1.getDate().getTime());
    java.sql.Date toDate= new java.sql.Date(jDateChooser_Date2.getDate().getTime());
    String space = jComboBox_Space.getSelectedItem().toString();
    String [] space_split = space.split(" ");
    String id_space = space_split[0];
    String query = "SELECT ID FROM Rent WHERE ID_Space = '" + id_space + "' AND Date1 BETWEEN ? AND ? OR Dat2 BETWEEN ? AND ?";
    try {
        pst = conn.Connection().prepareStatement(query);
        pst.setDate(1, fromDate);
        pst.setDate(2, toDate);
        pst.setDate(3, fromDate);
        pst.setDate(4, toDate);

        ResultSet res = pst.executeQuery();
        int ID = 0;
        while(res.next()) {
            ID = res.getInt("ID");
        }

        if(ID!=0)
            jTextField_Disp.setText("Rented");
        else
            jTextField_Disp.setText("Free");
    } catch(Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }
}
我的功能是控制用户输入的两个日期,并将它们与数据库进行比较。如果日期在时间范围内,你应该把身份证还给我。 但我不明白为什么不能进入while循环:

while(res.next()) {
    ID = res.getInt("ID");
}

救救我

查询中出现拼写错误,因此它不返回任何行。当我认为应该是“Date2”时,你却用了“Dat2”这个词

当前:

String query = "SELECT ID FROM Rent WHERE ID_Space = '" + id_space + "' AND Date1 BETWEEN ? AND ? OR Dat2 BETWEEN ? AND ?";
新的:


您能澄清一下“为什么不能进入while循环”的意思吗?您的SQL语句是可疑的。在MySQL中,
运算符的优先级高于
运算符。e、 g.“
费用和fi或fo
”相当于“
(费用和fi)或fo
”。我怀疑您想添加一些参数:“
fee和(fi或fo)
”。我也很好奇为什么
id\u space
的值作为文本包含在SQL文本中,而不是绑定占位符(如日期值)。我建议您验证SQL语句是否正常工作(来自另一个客户端)。while循环用于确定我的问题查询和我是否可以返回数据。我使用MySQL workbench检查了我的查询。感谢Baseball435:)我更正了错误,但它的工作方式不同:(
String query = "SELECT ID FROM Rent WHERE ID_Space = '" + id_space + "' AND Date1 BETWEEN ? AND ? OR Date2 BETWEEN ? AND ?";