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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с датой и PreparedStatement 
V
    Опции темы
WickedMan
Дата 19.12.2007, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



String data=yearParameter+"-"+monthParameter+"-"+dayParameter;


out.write(data); пробовал делать - запрошенную дату выводит в нужном формате ("yyyy-mm-dd")
сам выбор даты задан с использованием цикла типа 
Код

<%
            for (int i=1;i<=31;i++)
                {
                String cur1=String.valueOf(i);
                if (i<10) cur1="0"+cur1;
                out.write("<option value=\""+cur1+"\"");
                if (d==i)
                    out.write("selected");
                out.write(">"+cur1+"</option>");
                }
         %>


Код

String data=yearParameter+"-"+monthParameter+"-"+dayParameter;
out.write(data);
java.sql.Date date = java.sql.Date.valueOf(data);                            //на данный момент ошибка здесь

Connection conn=HibernateUtil.getConnection();
Statement st = conn.createStatement();
String query = "SELECT (field_1+field_2)/2 FROM tbl_1 WHERE data<=? ORDER BY data DESC LIMIT 1";
PreparedStatement statement = conn.prepareStatement(query);
statement.setDate(1, date);

очень актуально!

Это сообщение отредактировал(а) WickedMan - 19.12.2007, 16:56
PM MAIL   Вверх
Andyb
Дата 19.12.2007, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 7.6.2004
Где: Lille, France

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



простой пример:
Код

public class test {

    public static void main(String[] args){
        java.sql.Date d = java.sql.Date.valueOf("2007-12-19");
        System.out.println("Date is "+d);
    } 
}

на выходе получаем "Date is 2007-12-19"

проверяй что тебе приходит в переменной data, и напиши, что за ошибка
--------------------
 Большинство наших ошибок происходит из-за невнимательности.
PM ICQ   Вверх
WickedMan
Дата 20.12.2007, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

//String data=yearParameter+"-"+monthParameter+"-"+dayParameter; //причина крылась именно здесь!
String data=(y)+"-"+(m)+"-"+(d);
out.write(data);
java.sql.Date date = java.sql.Date.valueOf(data);                            
Connection conn=HibernateUtil.getConnection();
Statement st = conn.createStatement();
String query = "SELECT (field_1+field_2)/2 FROM tbl_1 WHERE data<=? ORDER BY data DESC LIMIT 1";
PreparedStatement statement = conn.prepareStatement(query);
statement.setDate(1, date);

дата выбирается пользователем вручную, и до тех пор пока она не выбрана, параметр переменной возвращает "null" из-за этого и происходила ошибка.

возникла новая проблема! мой портлет запускается либо в таком виде:
Код

String data=(y)+"-"+(m)+"-"+(d);
out.write(data);
java.sql.Date date = java.sql.Date.valueOf(data);

Connection conn=HibernateUtil.getConnection();
Statement st = conn.createStatement();
String query = "SELECT (bid_price+ask_price)/2 FROM tbl_kubn WHERE data<='?' ORDER BY data DESC LIMIT 1";
PreparedStatement statement = conn.prepareStatement(query);
//statement.setDate(1, date);

ResultSet rs = st.executeQuery(query);
while (rs.next())
{
out.print(rs);
}
rs.close();


либо в таком:
Код

String data=(y)+"-"+(m)+"-"+(d);
out.write(data);
java.sql.Date date = java.sql.Date.valueOf(data);

Connection conn=HibernateUtil.getConnection();
Statement st = conn.createStatement();
String query = "SELECT (bid_price+ask_price)/2 FROM tbl_kubn WHERE data<=? ORDER BY data DESC LIMIT 1";//обратите внимание на '?'
PreparedStatement statement = conn.prepareStatement(query);
statement.setDate(1, date);

//ResultSet rs = st.executeQuery(query);
//while (rs.next())
//{
//out.print(rs);
//}
//rs.close();


а мне надо что б работало и то и другое!
если я что-то непонятно объяснил - спрашивайте, постараюсь уточнить
I need some help...

Это сообщение отредактировал(а) WickedMan - 20.12.2007, 11:09
PM MAIL   Вверх
Andyb
Дата 20.12.2007, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 7.6.2004
Где: Lille, France

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



попробуй так:
Код


Connection conn=HibernateUtil.getConnection();
Statement st = conn.createStatement();
String query = "SELECT (field_1+field_2)/2 FROM tbl_1 WHERE data<='2007-12-20' ORDER BY data DESC LIMIT 1";
PreparedStatement statement = conn.prepareStatement(query);

ResultSet rs = st.executeQuery();
while (rs.next())
{
out.print(rs);
}
rs.close();

если будет ошибка, то проблема в sql



и измени в конце концов строчку
Код

ResultSet rs = statement.executeQuery(query);

на 
Код

ResultSet rs = statement.executeQuery();

я же выше в коде это писал, из-за этого и ошибка 99,999%

Это сообщение отредактировал(а) Andyb - 20.12.2007, 12:21
--------------------
 Большинство наших ошибок происходит из-за невнимательности.
PM ICQ   Вверх
WickedMan
Дата 20.12.2007, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



сделал все как вы посоветовали.

Код

The method executeQuery(String) in the type statement is not applicable for the arguments ()

в строке:
Код

ResultSet rs = st.executeQuery();


а если оставить:
Код

ResultSet rs = st.executeQuery(query);

а ошибка будет такая:
Код

java.sql.SQLException: Parameter index out of range (1 )number of parameters, whitch is 0).

в строке:
Код

statement.setDate(1, date);

дату, вбитую напрямую всеравно не выдает.
а если попадает не java.sql.Connection из HibernateUtil.getConnection(), а нечто другое, например сессия хибернейта? в этом случае ошибка  java.sql.SQLException: Parameter index out of range (1 )number of parameters, whitch is 0). очень даже логично выглядит - в хибернейте параметры с нуля нумеруются, а в jdbc - с единицы.
и еще, если используется хибернейт и JDBC в чистом виде, может в этом проблема? это как-нибудь упростить можно?
вот только как поправить... ума не приложу!?
PM MAIL   Вверх
Andyb
Дата 20.12.2007, 13:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 7.6.2004
Где: Lille, France

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



Повторюсь я выше в коде всё писал:
ваш код
Код

String data=(y)+"-"+(m)+"-"+(d);
out.write(data);
java.sql.Date date = java.sql.Date.valueOf(data);
Connection conn=HibernateUtil.getConnection();
Statement st = conn.createStatement();
String query = "SELECT (bid_price+ask_price)/2 FROM tbl_kubn WHERE data<='?' ORDER BY data DESC LIMIT 1";
PreparedStatement statement = conn.prepareStatement(query);
statement.setDate(1, date);
ResultSet rs = st.executeQuery(query);
while (rs.next())
{
out.print(rs);
}
rs.close();


мой код
Код

String data=(y)+"-"+(m)+"-"+(d);
out.write(data);
java.sql.Date date = java.sql.Date.valueOf(data);
Connection conn=HibernateUtil.getConnection();
//Statement st = conn.createStatement(); Этот Statement здесь не нужен!!!
String query = "SELECT (bid_price+ask_price)/2 FROM tbl_kubn WHERE data<=? ORDER BY data DESC LIMIT 1";//не надо кавычек
PreparedStatement statement = conn.prepareStatement(query);
statement.setDate(1, date);
ResultSet rs = statement.executeQuery();// Здесь вызываем метод executeQuery() класса PreparedStatement statement
while (rs.next())
{
out.print(rs);
}
rs.close();


--------------------
 Большинство наших ошибок происходит из-за невнимательности.
PM ICQ   Вверх
WickedMan
Дата 20.12.2007, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



сделал! даже заработало=)
исходя из данного кода, какое именно значение должна возвращать переменная "rs"?
по моему  (поле_1+поле_2)/ из таблицы_1 при учете даты, выбранной вручную!

у меня выводится что-то типа
Код

org.apache.tomcat.dbcp.dbcp.DelegatingResultSet@1e337bf

причем все что следует после @ является динамическим


Andyb я очень Вам благодарен за оказанную помощь и терпение! финал близок=)
PM MAIL   Вверх
Andyb
Дата 20.12.2007, 15:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 7.6.2004
Где: Lille, France

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



какой тип данных выдаёт (bid_price+ask_price)/2
в зависимости от этого ты вместо 
Код

out.print(rs);

пишешь
Код

out.print(rs.getXXXX(1));

где XXXX sql тип возвращаемого значения (см. java.sql.Types) 
например для строки это будет 
Код

out.print(rs.getString(1));

--------------------
 Большинство наших ошибок происходит из-за невнимательности.
PM ICQ   Вверх
WickedMan
Дата 20.12.2007, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



она должна быть Double. сделал. что-то получилось. щас буду разбираться и доводить до желаемого!
эх! наберу 100 сообщений, в первую очередь репутацию именно Вам подниму!
PM MAIL   Вверх
Andyb
Дата 20.12.2007, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 7.6.2004
Где: Lille, France

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



Цитата(WickedMan @ 20.12.2007,  15:51)
эх! наберу 100 сообщений, в первую очередь репутацию именно Вам подниму!

Звучит как спасибо smile
Пожалуйста

Это сообщение отредактировал(а) Andyb - 20.12.2007, 16:23
--------------------
 Большинство наших ошибок происходит из-за невнимательности.
PM ICQ   Вверх
WickedMan
Дата 20.12.2007, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



это не просто спасибо! это ОГРОМНОЕ спасибо!
PM MAIL   Вверх
Hidrag
Дата 21.12.2007, 01:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(WickedMan @  20.12.2007,  17:29 Найти цитируемый пост)
эх! наберу 100 сообщений, в первую очередь репутацию именно Вам подниму!

готово user posted image


Это сообщение отредактировал(а) Hidrag - 21.12.2007, 01:09


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

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

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


 




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


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

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