Java和MySQL查询日期
我的Java代码如下: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.
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 ?";