【发布时间】: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 工作台检查了我的查询。