Моего 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(res.next()) {
ID = res.getInt("ID");
}
Помоги мне!
Не мог бы вы уточнить, что вы имеете в виду "почему не может войти в то время цикла:"? – dbillz
Ваш оператор SQL является подозрительным. В MySQL оператор 'AND' имеет более высокий порядок приоритета, чем оператор' OR'. например "**" fee AND fi ИЛИ fo' ** "эквивалентно" ** '(fee AND fi) ИЛИ fo' **". Я подозреваю, что вы хотите добавить несколько парнеров: «**« fee AND (fi ИЛИ fo) '**». Мне также интересно, почему значение ** 'id_space' ** включено как литерал в тексте SQL , а не привязку привязки (например, значения даты). Я предлагаю вам проверить правильность работы вашего оператора SQL (от другого клиента). – spencer7593
Цикл while используется, чтобы определить, может ли мой вопрос и я могу вернуть данные. Я проверил с MySQL workbench мой запрос. – Simone94