【问题标题】:Can not write into DB [closed]无法写入数据库 [关闭]
【发布时间】:2016-03-26 17:44:36
【问题描述】:

我编写了一个 Java Web 应用程序,我想将数据写入数据库,但是当我在文本字段中填写信息并单击提交时,我没有在数据库中写入任何内容?有什么问题。

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

<%@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>

【问题讨论】:

  • 您的代码充满了缺陷和糟糕的设计。我建议你放弃这个并研究如何一起使用 servlet 和JSP,这样 JSP 将只处理显示逻辑,而 servlet 处理业务逻辑。
  • 您准备好的插入语句指定了两列,但您传入了三个值参数。

标签: java mysql sql jsp jdbc


【解决方案1】:

因为您没有向 INSERT 脚本发送任何值。

【讨论】:

    【解决方案2】:

    你做错了。首先,查询需要只有 2 个值而不是 3,一个用于 name,另一个用于 email。其次,您必须在查询后设置两个值(?,?)。你在这里错过了什么。

    例如:写这样的东西:

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

    代替 "name""email" 放置您从 UI 获得的值。

    要从 UI 中获取值,您可以使用类似:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 2015-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多