2015-12-20 110 views
-2

我写一个Java Web应用程序,我想将数据写入数据库,但是当我在文本字段填写信息,并点击提交我没有得到任何东西在DB写?问题是什么。无法写入到数据库

这是我到目前为止的代码:

<%@page import="java.sql.*"%> 
<% Class.forName("com.mysql.jdbc.Driver"); %> 
<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title></title> 
    </head> 
    <body onload="displayResult()"> 
     <%! 
      public class User { 
       String URL = "jdbc:mysql://localhost:3306/studetnInfo"; 
       String USERNAME = "root"; 
       String PASSWORD = "root"; 

       Connection myConnection = null; 
       Statement statement=null; 
       PreparedStatement insertUsers = null; 
       ResultSet resultSet = null; 

       public User(){ 

        try{ 

         myConnection = DriverManager.getConnection(URL, USERNAME, PASSWORD);    

         insertUsers = myConnection.prepareStatement(
         "INSERT INTO user(name, email) VALUES (?, ?, ?)"); 

        } catch(SQLException e){ 
         e.printStackTrace(); 
        } 
       } 

       public int setUsers (String userName, String userEmail){ 

        int result=0; 
        try{ 
         insertUsers.setString(1, userName); 
         insertUsers.setString(2, userEmail); 
         result = insertUsers.executeUpdate(); 

        }catch(SQLException e){ 
         e.printStackTrace(); 
        } 
        return result; 
       } 
      } 
     %> 
     <% 
      int result=0; 

      // If Submit buttin is clicked. 
      if (request.getParameter("submit") != null){ 

       String firstName = new String(); 
       String emailAddress = new String(); 

       if (request.getParameter("first") != null){ 
        firstName = request.getParameter("first"); 
       } 
       if (request.getParameter("email") != null){ 
        emailAddress = request.getParameter("email"); 
       } 

       User user = new User(); 
       result = user.setUsers(firstName, emailAddress); 
      } 
     %> 
     <form name="myform" action="index.jsp" method="POST"> 
      <table border="0"> 
       <tbody> 
        <tr> 
         <td>Enter First Name: </td> 
         <td><input type="text" name="first" value="" size="50" /></td> 
        </tr> 
        <tr> 
         <td>Enter E-mail Address: </td> 
         <td><input type="text" name="email" value="" size="50" /></td> 
        </tr> 
       </tbody> 
      </table> 
      <input type="hidden" name="hidden" value="<%= result %>" /> 
      <input type="reset" value="Clear" name="clear" /> 
      <input type="submit" value="Submit" name="submit" /> 
     </form> 
      <script lang="JavaScript"> 
      <!-- 
       function displayResult() 
       { 
        if(doccument.myform.hidden.value == 1){ 
         alert("Data Inserted"); 
        }else{ 
         alret("Data Not Inserted"); 
        } 
       } 
      //--> 
      </script> 
    </body> 
</html> 
+2

您的代码有很多问题和不好的设计。我建议你放弃这一点,并研究如何一起使用servlet和'JSP',以便JSP只处理显示逻辑,而servlet处理业务逻辑。 – Kayaman

+0

您准备好的insert语句指定了两列,但您传递了三个值参数。 – Parfait

回答

0

你做错了。首先查询的需求,另一个用于电子邮件只有2个值不是3,一个。其次,您必须在查询两个(?,?)后设置2个值。你在这里失踪。

防爆:写的是这样的:

insertUsers = myConnection.prepareStatement(
        "INSERT INTO user(name, email) VALUES (?, ?)"); 
insertUsers.setString("name"); 
insertUsers.setString("email"); 

代替“名”“电子邮件”的地方的价值观,你从UI了。

对于从您可以使用类似的UI获得的值:

request.getParameter("name of the form element"); 
0

因为你没有发送任何值的INSERT脚本。