код не вставляет данные в базу данных - PullRequest
0 голосов
/ 21 февраля 2012

Я пытаюсь сервлет, который помещает данные в базу данных: derbi (который поставляется с NetBeans) .Когда пользователь щелкает для отправки данных, запрос следует к FormHandler servlet (указанному ниже) Если какое-либо текстовое поле было пустым, запрос следует к другому сервлету ErrorServlet, и если все было в порядкезапрос следует к Registered servlet.Но перед тем как запрос следует к Registered Servlet, существует небольшой код, который пишется для вставки данных в базу данных (после этого кода пользователь просматривает страницу успеха, которую он зарегистрировал) .

Теперь проблема: пользователь заполняет все текстовые поля в форме и нажимает кнопку отправки.Когда он нажимает кнопку «Отправить», он видит страницу успеха, на которой отображается Зарегистрировано успешно .Но когда я запрашиваю базу данных, я вижу, что данные не были переданы в базу данных.Строки и столбцы пусты!Я не понимаю причину этого.

Код для FormHandler.java :

package FormHandler;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.LinkedList;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class FormHandler extends HttpServlet {
  @Override
         public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {

}

@Override
        public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {

    String name = request.getParameter("Name");
    String email = request.getParameter("Email");
    String password = request.getParameter("Password");

    LinkedList list = new LinkedList();

    if(name.compareTo("") == 0 || email.compareTo("") == 0 || email.compareTo("") == 0) {
        list.add("One or more field's' left blank");
        request.setAttribute("ErrorList", list);
        RequestDispatcher rd = request.getRequestDispatcher("ErrorServlet.view");
        rd.forward(request, response);
    } else {
        try {
            Context context = new InitialContext();
            DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/MyDatasource");
            Connection connection = ds.getConnection();
           String sqlStatement = "INSERT INTO INFORMATION VALUES('" + name + "'," + "'" + email + "'," + "'" + password + "')";  
               PreparedStatement statement = connection.prepareStatement(sqlStatement);
               ResultSet result = statement.executeQuery();     
        }catch(Exception exc) {
            System.out.println(exc);
        }
        request.setAttribute("Data", list);
        RequestDispatcher rd = request.getRequestDispatcher("Registered.view");
        rd.forward(request, response);
      }


}

} ​​

XML-файл :

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
    <servlet-name>FormHandler</servlet-name>
    <servlet-class>FormHandler.FormHandler</servlet-class>
</servlet>
<servlet>
    <servlet-name>Registered</servlet-name>
    <servlet-class>FormHandler.Registered</servlet-class>
</servlet>
<servlet>
    <servlet-name>ErrorServlet</servlet-name>
    <servlet-class>FormHandler.ErrorServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>FormHandler</servlet-name>
    <url-pattern>/FormHandler.do</url-pattern>
</servlet-mapping>

<resource-ref>
    <res-ref-name>jdbc/MyDatasource</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

<servlet-mapping>
    <servlet-name>Registered</servlet-name>
    <url-pattern>/Registered.view</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>ErrorServlet</servlet-name>
    <url-pattern>/ErrorServlet.view</url-pattern>
</servlet-mapping>
<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>

HTML Файл: Код для файла HTML

Примечание: я уже установил соединение с базой данных

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

Я думаю, вы получаете где-то:

 java.sql.SQLException: No ResultSet was produced

, поскольку выполнение запроса UPDATE с помощью executeQuery() фактически не возвращает набора результатов

Использование:

 statement.executeUpdate();     
0 голосов
/ 21 февраля 2012

попробуйте следующее:

 PreparedStatement ps2=null;
 ps2 = connection.prepareStatement("INSERT INTO INFORMATION( colname1, colname2,colname3) VALUES(? ,? ,?)");

          ps2.setString(1, name);
          ps2.setString(2, email);
          ps2.setString(3, password);

      try {
      rs=ps2.executeUpdate();  
       } catch (SQLException ex) {
            // catch if any exception 
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...