0
我的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");
}
幫幫我!
你能澄清你所說的 「爲什麼不能while循環進入:」 是什麼意思? – dbillz
您的SQL語句是可疑的。在MySQL中,「AND」運算符的優先級高於「OR」運算符。例如「**'費用並且或者** **」相當於「**」(費用和費用)或者「**」。我懷疑你想添加一些parens:「**'fee和(fi或fo)'**'。我也很好奇爲什麼** id_space **的值被包含在SQL文本中,而不是一個綁定佔位符(如日期值)。我建議您驗證您的SQL語句是否正常工作(來自另一個客戶端) – spencer7593
while循環用於確定我的問題查詢和我是否可以返回數據。我檢查了MySQL的工作臺我的查詢 – Simone94