【问题标题】:Java and MySQL query DateJava 和 MySQL 查询日期
【发布时间】:2015-07-10 13:47:11
【问题描述】:

我的 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);
    }
}

我的功能是控制用户输入的两个日期并将它们与数据库进行比较。如果日期在时间范围内,你应该把 id_rent 还给我。 但是我不明白为什么不能进入while循环:

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

帮帮我!

【问题讨论】:

  • 你能澄清一下“为什么不能进入while循环:”的意思吗?
  • 您的 SQL 语句有问题。在 MySQL 中,AND 运算符的优先级高于 OR 运算符。例如“fee AND fi OR fo”等价于“(fee AND fi) OR fo”。我怀疑您想添加一些括号:“fee AND (fi OR fo)'。我也很好奇为什么 id_space 的值作为文字包含在 SQL 文本中,而不是绑定占位符(如日期值)。我建议您验证您的 SQL 语句是否正常工作(来自另一个客户端)。
  • while循环用于判断我的问题查询是否可以返回数据。我用 MySQL 工作台检查了我的查询。

标签: java mysql date


【解决方案1】:

您在查询中犯了拼写错误,因此它不返回任何行。当我认为它应该是“Date2”时,你输入了“Dat2”这个词。

当前:

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

新:

String query = "SELECT ID FROM Rent WHERE ID_Space = '" + id_space + "' AND Date1 BETWEEN ? AND ? OR Date2 BETWEEN ? AND ?";

【讨论】:

  • 谢谢 Baseball435 :) 我纠正了错误,但它的工作原理不一样 :(
猜你喜欢
  • 1970-01-01
  • 2015-08-12
  • 2014-02-18
  • 2010-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-01
  • 2011-04-23
相关资源
最近更新 更多