代码不会将数据插入数据库

时间:2012-02-21 10:17:15

标签: java database java-ee servlets

我正在尝试将数据放入数据库的servlet:derbi (包含netbeans)。当用户单击以提交数据时,请求将跟随FormHandler servlet (如下所示)如果任何文本字段为空,则请求将跟随另一个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 文件: Code for html file

注意:我已经建立了与数据库的连接

2 个答案:

答案 0 :(得分:1)

我认为你到了某个地方:

 java.sql.SQLException: No ResultSet was produced

因为使用executeQuery()执行UPDATE查询实际上不返回结果集

使用:

 statement.executeUpdate();     

答案 1 :(得分:0)

尝试以下方法:

 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 
        }