Java和MySQL查询日期
问题描述:
我的Java代码是这样的:Java和MySQL查询日期
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");
}
帮帮我!
答
您在查询中犯了拼写错误,因此它不返回任何行。当我相信它应该是“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 ?";
+0
谢谢Baseball435 :)我纠正了错误,但它不工作相同:( – Simone94
你能澄清你所说的 “为什么不能while循环进入:” 是什么意思? – dbillz
您的SQL语句是可疑的。在MySQL中,“AND”运算符的优先级高于“OR”运算符。例如“**'费用并且或者** **”相当于“**”(费用和费用)或者“**”。我怀疑你想添加一些parens:“**'fee和(fi或fo)'**'。我也很好奇为什么** id_space **的值被包含在SQL文本中,而不是一个绑定占位符(如日期值)。我建议您验证您的SQL语句是否正常工作(来自另一个客户端) – spencer7593
while循环用于确定我的问题查询和我是否可以返回数据。我检查了MySQL的工作台我的查询 – Simone94