【问题标题】:Inserting Data in to the MySQL Database by clicking submit button in JSP通过单击 JSP 中的提交按钮将数据插入 MySQL 数据库
【发布时间】:2015-11-30 11:02:15
【问题描述】:

以下代码是通过JSP通过点击HTML中的提交按钮从数据库中获取数据,更新和设置数据到数据库。

 <%
    String CONN_STRING = "jdbc:mysql://localhost/pmsdb";
    String USERNAME = "dbuser";
    String PASSWORD = "dbpassword";

    Connection conn=null;
    ResultSet rs =null;
    ResultSet rs2 =null;

    Statement stmt=null;
    Statement stmt2=null;

    PreparedStatement pst=null;
    PreparedStatement pst2=null;
    PreparedStatement pst3=null;

    Class.forName("com.mysql.jdbc.Driver");

    conn = DriverManager.getConnection(CONN_STRING, USERNAME, PASSWORD);

    String pno = request.getParameter("PONo");


    String sql = "SELECT * FROM purchaseorderinfo WHERE PONo='"+pno+"'";
    String sql2 ="SELECT * FROM itemspoinfo WHERE PONo='"+pno+"'";

    stmt = conn.createStatement();
    rs=stmt.executeQuery(sql);

    stmt2=conn.createStatement();
    rs2=stmt2.executeQuery(sql2);
    %>  

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


    if(request.getParameter("btnacc")!=null){

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

        String sql3="UPDATE itemspoinfo SET AorD=1 WHERE PONo='"+pno+"'";
        pst = conn.prepareStatement(sql3);
        pst.execute();

        String sql4="INSERT INTO pointoinvoce (InvoiceDate, Company, ItemName, Qty, Price, PONo) VALUES (?,?,?,?,?,?)";
        pst2=conn.prepareStatement(sql4);

        int noofdrugs=0;

        while(rs2.next() && rs.next()){
           String name =rs2.getString("ItemName");
           String qty = rs2.getString("Qty");

           pst2.setTimestamp(1, timestamp);
           pst2.setString(2, rs.getString("Supplier"));
           pst2.setString(3, name);
           pst2.setString(4, qty);
           pst2.setString(5, rs2.getString("Price"));
           pst2.setString(6, pno);
           pst2.addBatch();
           noofdrugs++;

        }
        pst2.executeBatch();

    }

    if(request.getParameter("btnde")!=null){

        String sql5="UPDATE itemspoinfo SET AorD=1 WHERE PONo='"+pno+"'";
        pst3= conn.prepareStatement(sql5);
        pst3.execute();
    }
    %>
<div class="row">
<div class="col-md-12">
<div class="citydetails">
    <div class="panel panel-primary">
      <div class="panel-heading">Purchase Order Details</div>
      <div class="panel-body">
          <table class="table">
              <thead>
                    <tr>
                        <th>Purchase Order <%=request.getParameter("PONo") %></th>
                    </tr>   
              </thead>
            <tbody>

                    <tr>

                        <td>
                            <% if(rs.next()){ %>
                            Purchase Order Date : <%= rs.getString("PODate") %><br>
                            Expected Date : <%=rs.getString("ExpectedDate") %> <br>
                            <% } %> 

                            <table class="table">
                                <tbody>
                                    <tr>
                                        <th>Items</th>
                                        <th>Quantity</th>
                                    </tr>
                                     <% while (rs2.next()){ %>
                                    <tr>

                                        <td><%=rs2.getString("ItemName")%></td>
                                        <td><%=rs2.getString("Qty")%></td>

                                    </tr>
                                    <% } %>


                                </tbody>

                            </table>



                        </td>

                    </tr>

            </tbody>

            </table>
                <button type="submit" name="btnacc" class="btn btn-primary accept" id="btnacc" onclick="clickabtn()">Accept</button>   
                <button type="submit" name="btnde" class="btn btn-primary accept" id="btnde" onclick="clickdbtn()">Decline</button>



      </div>
    </div>
</div>
</div>
</div>

但是当点击 btnacc 按钮时,数据库表中没有任何反应。

当点击 btnde 按钮时,数据库表中什么也没有发生。

这里有什么错误,请帮我解决这个问题?

【问题讨论】:

  • jdbc url 中缺少端口号? jdbc:mysql://localhost:3306/pmsdb。确保已建立数据库连接,对conn 对象进行null 检查,以便您知道数据库是否已连接以及流向何处。

标签: java html mysql jsp


【解决方案1】:

您的HTML 必须用&lt;form&gt; ... &lt;/form&gt; 括起来,他负责收集信息并发送服务器端。如果您不指定提交的目标地址,它将假定它是当前页面(这对于 servlet 可以正常工作),如果您不指定方法,它将默认通过 GET 方法发送。

检查 servlet 生命周期,您的代码实际上是 JSP。在后端,它将生成一个不符合并发性的服务集。这意味着您必须自己威胁此类问题。示例:两个客户端请求同时完成,可能会导致相互冲突和相互提交的干扰,可能会在服务器端产生 ConcurrentModicationException。

【讨论】:

    猜你喜欢
    • 2017-06-07
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 2014-04-16
    • 2012-02-24
    • 2015-03-30
    相关资源
    最近更新 更多