Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JSpinner и запрос в MySQL, Возвращается пустой запрос 
V
    Опции темы
Bibiqon
Дата 24.10.2010, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 16.2.2010

Репутация: нет
Всего: нет



Вобщем проблема такая:
есть БД на MySQL и таблица temp, в ней есть поле temp_date типа DATE.
На форме программы есть 2 JSpinner, в которых юзер должен выбрать даты начала и конца периода.
Код

private JSpinner startDate    = new JSpinner(new SpinnerDateModel(new Date(), null, null, Calendar.DAY_OF_MONTH));
private JSpinner endDate    = new JSpinner(new SpinnerDateModel(new Date(), null, null, Calendar.DAY_OF_MONTH));

Получаю дату из JSpinner:
Код

String dateStart    = startDate.getValue().toString();
String dateEnd        = endDate.getValue().toString();

вношу в запрос строки dateStart и dateEnd :
Код

private static String SHOW_TEMP = "";
SHOW_TEMP = "SELECT * FROM `temp` WHERE temp_date BETWEEN  DATE('" + dateStart + "')  AND DATE('" + dateEnd + "')";
System.out.println(SHOW_TEMP); 

Делаем запрос в БД с заданным параметром BETWEEN , результат : запрос возвращает пустое количество строк и соответственно в таблице JTable нет данных. 
Строка :
Код

 System.out.println(SHOW_TEMP); 
выводит на консоль текст запроса:  
Код

SELECT * FROM `temp` WHERE temp_date BETWEEN  DATE('Mon Oct 18 11:30:00 EEST 2010')  AND DATE('Sun Oct 24 11:30:28 EEST 2010')

Пробовал делать запрос без параметра BETWEEN (т.е. не вводил даты для сортировки) - данные отображаются как положено.
В соответствии с этим описанием вместо функции MySQL DATE()  пробовал STR_TO_DATE() : 
Код

SHOW_TEMP = "SELECT * FROM `temp` WHERE temp_date BETWEEN  STR_TO_DATE('" + dateStart + "', '%Y-%m-%d ')  AND STR_TO_DATE('" + dateEnd + "', '%Y-%m-%d ')";
- результат тот же   smile  .
В чем может быть проблема??
Чувствую что проблема в гдето в типе данных либо в неправильном возврате строки для запроса.
Хотя делал запрос в БД: 
Код

SELECT * FROM `temp` WHERE temp_date BETWEEN DATE('2010-10-18')  AND DATE('2010-10-24')

вернулся результат в виде нескольких строк...
----------------
Возможно слишком запутанно описал, но вроде бы как все логично... никаких ошибок в консоли но и результата нет...
Подскажите плз куда смотреть, что почитать, ато както стыдно - мелочь а не могу понять...
Спасибки заранее всем откликнувшимся, даже за негативные ответы ))).
PM MAIL   Вверх
Connie
Дата 24.10.2010, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 12.8.2008

Репутация: 8
Всего: 9



А собственно при чем тут ГУЙ и работа с БД? Ну ведь можно отследить события которые возникают или не возникают при изменении спиннера, верно? А если они возникают и из спиннера программа получает нужные значения, то значит проблема не в нем?

Далее смотрим запрос  в БД, если с параметрами, которые передаем или спиннеров или задаем вручную запрос не выдает нужные данные, то проверяем работу с БД, а если выдает, то идем дальше к работе JTable, разбираемся в ее работой, почему она не обновляется, если ей подсовываются новые данные.

Я к тому, что Java: GUI и Java FX приложения тут совсем ни при чем. 

ИМХО
PM MAIL WWW   Вверх
Bibiqon
Дата 24.10.2010, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 16.2.2010

Репутация: нет
Всего: нет



Предполагаю что использую неправильную модель JSpinner и видимо поэтому БД не понимает саму строку: 'Mon Oct 18 11:30:00 EEST 2010'.
К другой строке привести не могу (поэтому и написал сюда, в наденжде  на помощь гуру), а надо типа : DATE('2010-10-18'), потому как в данном случае есть резалт.
PM MAIL   Вверх
jk1
Дата 25.10.2010, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 21
Всего: 75



Цитата

Предполагаю что использую неправильную модель JSpinner и видимо поэтому БД не понимает саму строку: 'Mon Oct 18 11:30:00 EEST 2010'.

Модель тут не при чем. Смотрите сами: БД ожидает строку вида '2010-10-18', вы ей при этом передаете 'Mon Oct 18 11:30:00 EEST 2010'. Результат вполне предсказуем - строка не аспознается базой как валидная дата.

Способов решения поблемы два:

1. Вот такая запись преобразует дату к требуемому представлению
Код

new SimpleDateFormat("yyyy-MM-dd").format(startDate.getValue());



2. Использовать PreparedStatement и его метод setDate(). Вот пример, с датой все делается похожим образом:
Код

   PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
                                     SET SALARY = ? WHERE ID = ?");
   pstmt.setBigDecimal(1, 153833.00)
   pstmt.setInt(2, 110592)



--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Bibiqon
Дата 25.10.2010, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 16.2.2010

Репутация: нет
Всего: нет



2jk1 
"Болшое человеческое спасибо" Вот этого я и не знал как сделать... Все заработало на отлично.
Мне больше подходит первый вариант - про второй я думал - но для него отдельный запрос в класс надо было писать - а у меня один запрос к БД и я в него просто строки вставляю по надобности.
С ув. Bibiqon
PM MAIL   Вверх
jk1
Дата 25.10.2010, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 21
Всего: 75



Bibiqon, 

Всегда пожалуйста. Пометьте вопрос как решенный, ссылка в правом верхнем углу.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Bibiqon
Дата 26.10.2010, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 16.2.2010

Репутация: нет
Всего: нет



Пометил, спасибо еще раз.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0927 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.