Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JSP中单击按钮插入MySQL数据库_Java_Mysql_Jsp - Fatal编程技术网

Java 在JSP中单击按钮插入MySQL数据库

Java 在JSP中单击按钮插入MySQL数据库,java,mysql,jsp,Java,Mysql,Jsp,下面的代码是将数据插入MySQL数据库 但代码并不是通过单击“发送”按钮将数据插入数据库 <% Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(CONN_STRING, USERNAME, PASSWORD); if(request.getParameter("send")!=null){ String scom=request.getPa

下面的代码是将数据插入MySQL数据库

但代码并不是通过单击“发送”按钮将数据插入数据库

    <%
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection(CONN_STRING, USERNAME, PASSWORD);

    if(request.getParameter("send")!=null){
        String scom=request.getParameter("scompany");
        String porderno=request.getParameter("pono");
        String bdate=request.getParameter("date");
        String drug1=request.getParameter("d1");
        String qty1=request.getParameter("q1");


        //getting todaydate
        Date date = new Date();
        Timestamp timestamp = new Timestamp(date.getTime());

        String sql = "INSERT INTO purchaseorderinfo SET Supplier ='"+scom+"', PONo='"+porderno+"', ExpectedDate='"+bdate+"', PODate='"+timestamp+"' ";
        pst=conn.prepareStatement(sql);


        if((scom!=null && scom.length()>0)
            && (porderno!=null && porderno.length()>0)
            && (bdate!=null && bdate.length()>0)
            && (drug1!=null && drug1.length()>0)
            && (qty1!=null && qty1.length()>0)){

            pst.execute();
          %>
          <script language="javascript">
                alert("Send sucess");
          </script>
          <%    
        }
    }
%>
0)
&&(porderno!=null&&porderno.length()>0)
&&(bdate!=null&&bdate.length()>0)
&&(drug1!=null&&drug1.length()>0)
&&(qty1!=null&&qty1.length()>0){
pst.execute();
%>
警报(“发送成功”);
这是我的发送按钮

<div class="col-md-8">
    <form action="adminpg-purchaseorder.jsp" method="post" id="login-form" role="form" style="display: block">
        <div class="form-group">
            <div class="row">
                <div class="col-sm-6 col-sm-offset-3">
                    <input type="submit" name="send" id="submit" tabindex="1" class="form-control btn btn-login" value="Send">
                </div>
            </div>
        </div>    
    </form>
</div>


如何修复此代码以将数据插入数据库?

您的
插入
查询错误。它类似于
更新
查询。请更改它

String sql = "INSERT INTO purchaseorderinfo SET Supplier ='"+scom+"', PONo='"+porderno+"', ExpectedDate='"+bdate+"', PODate='"+timestamp+"' ";

总而言之:

  • JSP中不应该有任何业务逻辑
  • 验证是否已连接到数据库
  • 更新insert语句
  • 关闭连接,可能是数据正在插入但未提交
  • 确保“自动提交”处于启用状态

  • 我建议您将java代码从jsp文件中分离出来

        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
                response.setContentType("text/html");
                PrintWriter pw = response.getWriter();
                String CONN_STRING = "jdbc:mysql://localhost/dbName"; 
                Connection connection;
           try{
               String scom=request.getParameter("scompany");
               String porderno=request.getParameter("pono");
               String bdate=request.getParameter("date");
               String drug1=request.getParameter("d1");
               String qty1=request.getParameter("q1");
    
              Class.forName("com.mysql.jdbc.Driver");
              conn = DriverManager.getConnection(CONN_STRING, USERNAME, PASSWORD);
              PreparedStatement pst = connection.prepareStatement("insert into purchaseorderinfo values(?,?,?,?,?)"); 
              pst.setString(1,scom);
              pst.setString(2,porderno);      
              pst.setString(3,bdate);
              pst.setString(4,drug1);
              pst.setString(5,qty1);
              int i = pst.executeUpdate();
    
           if(i!=0){
               pw.println("<br>Data has been inserted");
           }
           else{
              pw.println("failed!");
           }
    
           } catch (Exception e){
             pw.println(e);
         }
       }
    
    public void doPost(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
    response.setContentType(“text/html”);
    PrintWriter pw=response.getWriter();
    String CONN_String=“jdbc:mysql://localhost/dbName"; 
    连接;
    试一试{
    字符串scom=request.getParameter(“scompany”);
    字符串porderno=request.getParameter(“pono”);
    字符串bdate=request.getParameter(“日期”);
    字符串1=request.getParameter(“d1”);
    字符串qty1=request.getParameter(“q1”);
    Class.forName(“com.mysql.jdbc.Driver”);
    conn=DriverManager.getConnection(conn_字符串、用户名、密码);
    PreparedStatement pst=connection.prepareStatement(“插入到purchaseorderinfo值(?,,,?,?)”;
    pst设置管柱(1,scom);
    pst固定管柱(2,端口号);
    pst.setString(3,b日期);
    pst固定管柱(4,1);
    pst.固定管柱(5,qty1);
    int i=pst.executeUpdate();
    如果(i!=0){
    pw.println(“插入了数据”);
    }
    否则{
    println(“失败!”);
    }
    }捕获(例外e){
    pw.println(e);
    }
    }
    
    需要进行以下更改

  • 您应该以单一形式包含所有必填字段。现在
    request.getParameter(“scompany”);
    将返回
    null
  • 按照@HarshitShrivastava的建议更新您的插入查询。注意:您应该使用preparedStatement来防止
  • 验证是否正确创建了数据库连接
  • 提交您的连接(如果数据库端的自动提交为false),并在最后关闭连接
  • 建议:将代码从JSP移动到Servlet

  • 请共享异常日志第一步是将其从jsp中删除(仅限于UI),并将所有实际java代码放在servlet中。在函数中,您从请求参数中获取值,但在表单中没有此类字段……没有错误显示@saurabhjunjunhunalayes我对这些值有单独的表单:(@Luffy我如何在不包含一个表单的情况下修复此问题?这不是唯一有助于OP解决其问题的更改。我已经更改了上述代码,但仍然没有将数据插入数据库@Harshit。)Shrivastava@tenten,即使您从表单中获取数据,也要进行检查!!
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
                response.setContentType("text/html");
                PrintWriter pw = response.getWriter();
                String CONN_STRING = "jdbc:mysql://localhost/dbName"; 
                Connection connection;
           try{
               String scom=request.getParameter("scompany");
               String porderno=request.getParameter("pono");
               String bdate=request.getParameter("date");
               String drug1=request.getParameter("d1");
               String qty1=request.getParameter("q1");
    
              Class.forName("com.mysql.jdbc.Driver");
              conn = DriverManager.getConnection(CONN_STRING, USERNAME, PASSWORD);
              PreparedStatement pst = connection.prepareStatement("insert into purchaseorderinfo values(?,?,?,?,?)"); 
              pst.setString(1,scom);
              pst.setString(2,porderno);      
              pst.setString(3,bdate);
              pst.setString(4,drug1);
              pst.setString(5,qty1);
              int i = pst.executeUpdate();
    
           if(i!=0){
               pw.println("<br>Data has been inserted");
           }
           else{
              pw.println("failed!");
           }
    
           } catch (Exception e){
             pw.println(e);
         }
       }