2015-07-10 3 views
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(res.next()) { 
    ID = res.getInt("ID"); 
} 

Помоги мне!

+0

Не мог бы вы уточнить, что вы имеете в виду "почему не может войти в то время цикла:"? – dbillz

+0

Ваш оператор SQL является подозрительным. В MySQL оператор 'AND' имеет более высокий порядок приоритета, чем оператор' OR'. например "**" fee AND fi ИЛИ fo' ** "эквивалентно" ** '(fee AND fi) ИЛИ fo' **". Я подозреваю, что вы хотите добавить несколько парнеров: «**« fee AND (fi ИЛИ fo) '**». Мне также интересно, почему значение ** 'id_space' ** включено как литерал в тексте SQL , а не привязку привязки (например, значения даты). Я предлагаю вам проверить правильность работы вашего оператора SQL (от другого клиента). – spencer7593

+0

Цикл while используется, чтобы определить, может ли мой вопрос и я могу вернуть данные. Я проверил с MySQL workbench мой запрос. – Simone94

ответ

2

Вы сделали орфографическую ошибку в своем запросе, чтобы он не возвращал строк. Вы помещаете слово «Dat2», когда я считаю, что это должно быть «Date2».

тока:

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

Смежные вопросы