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

Поиск:

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


Шустрый
*


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

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



добрый день.
недавно ковыряю jsp, поэтому сильно не бейте )

такой вопрос:

есть БД (MySQL) с полями data, billetes
в первом храниться дата, во втором наличие билетов на данную дату (да/нет)

я пытаюсь сделать так, что бы когда я ввожу какую то дату, мне выдавало не только введенную дату, но и 2 ближайшие.

соответственно AdminDataBean.java у меня такой

Код

public class AdminDataBean {
     private Connection connection;
     private PreparedStatement addRecords, getRecords;

      public AdminDataBean() throws Exception
  {

      String databaseurl = "jdbc:mysql://localhost/billetes?",
          user = "root",
          password = "",
          driverName = "com.mysql.jdbc.Driver";
        Connection connection = null;
        Class.forName(driverName).newInstance();
        connection = java.sql.DriverManager.getConnection(databaseurl, user, password);

          getRecords = connection.prepareStatement("SELECT * FROM admin WHERE data = ? ORDER BY data LIMIT 1") +
                                                   "UNION" +
                                                   "SELECT * FROM admin WHERE data = ?" +
                                                   "UNION" +
                                                   "SELECT * FROM admin WHERE data > ? ORDER BY data LIMIT 1");

          addRecords = connection.prepareStatement("REPLACE INTO admin SET data = ?, billetes = ?");
 
  }

    public List getAdminList() throws SQLException {
        List adminList = new ArrayList();

            ResultSet results = getRecords.executeQuery();

            while ( results.next())
            {

                AdminBean admin = new AdminBean();
                admin.setData(results.getString(1));
                admin.setBilletes(results.getString(2));

                adminList.add(admin);
            }
        return adminList;
    }

    public void addAdmin(AdminBean admin) throws SQLException
    {
        addRecords.setString(1, admin.getData());
        addRecords.setString(2, admin.getBilletes());

        addRecords.executeUpdate();
    }
    protected void finalize()
    {
        try
            {
              getRecords.close();
              addRecords.close();
              connection.close();
            }
            catch(SQLException sqlException)
            {
               sqlException.printStackTrace();
            }

    }
}



В adminBilletes.jsp ввод данных такой

Код


<jsp:useBean id="adminData" scope = "request" class = "com.guest.AdminDataBean" />
<jsp:useBean id="adminBean" scope = "page" class = "com.guest.AdminBean"/>

.......


     <jsp:setProperty name="adminBean" property="*"/>
  <%
      if ( adminBean.getData() == null
         )
      {
  %>

    <form method="post" action="adminBilletes.jsp">
         <p><strong>Enter datos</strong></p>


         <table>
             <tr>
                 <td>Data</td>
                 <td><input type="text" name="data"/></td>
             </tr>
             <tr>
                 <td>Billetes</td>
                 <td><input type="text" name="billetes"/></td>
             </tr>
             <tr>
                 <td colspan="2"><input type="submit" value="Submit"/></td>
             </tr>
         </table>
     </form>
     <%
         }
         else
         {
             adminData.addAdmin(adminBean);

     %>
           <jsp:forward page="admin.jsp"/>
        <%
         }
    %>


вывод результата в admin.jsp 

Код


<jsp:useBean id="adminData" scope = "request" class = "com.guest.AdminDataBean" />
.......

    <p style = "font-size: 2em;">Lista de billetes</p>

    <table>
        <thead>
            <tr>
                <th style = "width: 100px;">Data</th>
                <th style = "width: 100px;">Billetes</th>
            </tr>
        </thead>
        <tbody>
    <%
        List adminList = adminData.getAdminList();
        Iterator adminListIterator = adminList.iterator();
        AdminBean admin;

        while (adminListIterator.hasNext()) {
            admin = (AdminBean) adminListIterator.next();
    %>
        <tr>
            <td><%= admin.getData()%></td>
            <td><%= admin.getBilletes()%></td>
        </tr>
    <%
         }
    %>
        </tbody>
    </table>


ну самый обычный AdminBean.java
Код

public class AdminBean {

    private String  data, billetes;


    public void setBilletes(String name)
    {
        billetes = name;
    }

    public String getBilletes()
    {
        return billetes;
    }

    public void setData(String name)
    {
       data = name;
    }

    public String getData()
    {
        return data;
    }


так вот! если я в  AdminDataBean.java - getRecords делаю например SELECT * FROM admin : работает
или SELECT * FROM admin WHERE data < '2007-11-30' ORDER BY data : тоже никаких проблем....

а вот при попытке сделать хотя бы так SELECT * FROM admin WHERE data < ? : все....пишет Exception в admin.jsp 
List adminList = adminData.getAdminList();

что я делаю не так? подскажите плз...выведите на путь истинный 
PM MAIL   Вверх
Kangaroo
Дата 30.11.2007, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Цитата(Smolet @  30.11.2007,  15:38 Найти цитируемый пост)
пишет Exception в admin.jsp 

какой иксепшн?


--------------------
Lost....
PM MAIL MSN   Вверх
Kangaroo
Дата 30.11.2007, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



И еще - где устанавливаются параметры для getRecords ? что-то не нашел.


--------------------
Lost....
PM MAIL MSN   Вверх
Smolet
Дата 30.11.2007, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



упс...часа через два напишу
PM MAIL   Вверх
Smolet
Дата 3.12.2007, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



в связи с выходными 2 часа слехка растянулись )))

во первых 

Код


org.apache.jasper.JasperException: Exception in JSP: /admin.jsp:103

100:         </thead>
101:         <tbody>
102:     <%
103:         List adminList = adminData.getAdminList();
104:         Iterator adminListIterator = adminList.iterator();
105:         AdminBean admin;
106: 


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:467)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:691)
    org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:661)
    org.apache.jsp.adminBilletes_jsp._jspService(adminBilletes_jsp.java:165)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

javax.servlet.ServletException: No value specified for parameter 1
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
    org.apache.jsp.admin_jsp._jspService(admin_jsp.java:224)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:691)
    org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:661)
    org.apache.jsp.adminBilletes_jsp._jspService(adminBilletes_jsp.java:165)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

java.sql.SQLException: No value specified for parameter 1
    com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1056)
    com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
    com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
    com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2179)
    com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2103)
    com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1829)
    com.guest.AdminDataBean.getAdminList(AdminDataBean.java:47)
    org.apache.jsp.admin_jsp._jspService(admin_jsp.java:186)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:691)
    org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:661)
    org.apache.jsp.adminBilletes_jsp._jspService(adminBilletes_jsp.java:165)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)



во - вторых по getRecords Вы про это?
Код


public class AdminDataBean {
     private Connection connection;
     private PreparedStatement addRecords, getRecords;

      public AdminDataBean() throws Exception
  {

      String databaseurl = "jdbc:mysql://localhost/billetes?",
          user = "root",
          password = "",
          driverName = "com.mysql.jdbc.Driver";
        Connection connection = null;
        Class.forName(driverName).newInstance();
        connection = java.sql.DriverManager.getConnection(databaseurl, user, password);

          getRecords = connection.prepareStatement("SELECT * FROM admin WHERE data = ?");
          System.out.println(getRecords);
          addRecords = connection.prepareStatement("REPLACE INTO admin SET data = ?, billetes = ?");
          System.out.println("addRecords " + addRecords);
  }

    public List getAdminList() throws SQLException {
        List adminList = new ArrayList();

            ResultSet results = getRecords.executeQuery();

            while ( results.next())
            {

                AdminBean admin = new AdminBean();
                admin.setData(results.getString(1));
                admin.setBilletes(results.getString(2));

                adminList.add(admin);
            }
        return adminList;
    }




так в самом первом коде я весь класс выложил, там и это есть...или я чего то не понял??
PM MAIL   Вверх
Kangaroo
Дата 3.12.2007, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Smolet, 
мое предположение подтвердил stacktrace ). Еще раз:

Цитата(Kangaroo @  30.11.2007,  16:51 Найти цитируемый пост)
где устанавливаются параметры для getRecords ? 


Вы же пишете:
Код

 getRecords = connection.prepareStatement("SELECT * FROM admin WHERE data = ?");

А где подставляется параметр вместо ?


--------------------
Lost....
PM MAIL MSN   Вверх
Smolet
Дата 3.12.2007, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ну вот так вот ....
Код

   <form method="post" action="adminBilletes.jsp">
         <p><strong>Enter datos</strong></p>
         <table>
             <tr>
                 <td>Data</td>
                 <td><input type="text" name="data"/></td>
             </tr>


потом

Код


public class AdminBean {
    private String  data, billetes;
    public void setBilletes(String name)
    {
        billetes = name;
    }
    public String getBilletes()
    {
        return billetes;
    }
    public void setData(String name)
    {
       data = name;
    }
    public String getData()
    {
        return data;
    }


я вообще то сделал точно так же как и в addRecords когда задавал туже  data. И у меня все работает...
PM MAIL   Вверх
Kangaroo
Дата 3.12.2007, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Может я что-то не понимаю  smile 

Цитата(Smolet @  2.12.2007,  23:49 Найти цитируемый пост)
я вообще то сделал точно так же как и в addRecords когда задавал туже  data. И у меня все работает... 

Для addRecords у вас есть:
Код

addRecords.setString(1, admin.getData());
addRecords.setString(2, admin.getBilletes());

Я хочу найти такие же строки для getRecords


--------------------
Lost....
PM MAIL MSN   Вверх
Smolet
Дата 3.12.2007, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



блин, по тону чуствую - что-то не так, а понять не могу ....

Код

    public List getAdminList() throws SQLException {
        List adminList = new ArrayList();

            ResultSet results = getRecords.executeQuery();

            while ( results.next())
            {

                AdminBean admin = new AdminBean();
                admin.setData(results.getString(1));

                adminList.add(admin);
            }
        return adminList;
    }


вот здесь я описываю getRecords.




Это сообщение отредактировал(а) Smolet - 3.12.2007, 12:30
PM MAIL   Вверх
Kangaroo
Дата 3.12.2007, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Попробую пойти издалека...
У вас есть PreparedStatement:
Код

getRecords = connection.prepareStatement("SELECT * FROM admin WHERE data = ? ORDER BY data LIMIT 1") +
                                                   "UNION" +
                                                   "SELECT * FROM admin WHERE data = ?" +
                                                   "UNION" +
                                                   "SELECT * FROM admin WHERE data > ? ORDER BY data LIMIT 1");

Выполняется он вот так:
Код

ResultSet results = getRecords.executeQuery();

А перед выполнением вы должны указать ему параметры. Вот для addRecords у вас указываются параметры вот так:
Код

addRecords.setString(1, admin.getData());
addRecords.setString(2, admin.getBilletes());

А для getRecords где указываются? У вас и ошибка вылетает:
Цитата

java.sql.SQLException: No value specified for parameter 1

"Не установлено значение для параметра 1"



--------------------
Lost....
PM MAIL MSN   Вверх
Smolet
Дата 3.12.2007, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



таких как я надо растреливать из рогатки за невнимательность )))

getRecords.setString(1, admin.getData());

я просто даже понять не мог что это не написано!!!

всем спасибо
PM MAIL   Вверх
Kangaroo
Дата 3.12.2007, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Уря! Получилось  smile  Поздравляю )) На 4 дня растянулось объяснение  smile 


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

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

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


 




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


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

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