2015-09-04 127 views
-1

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

<% 
    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按钮被点击时,数据库表中没有任何反应。

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

+1

'jdbc' url中缺少端口号? jdbc:mysql:// localhost':3306'/pmsdb。确保数据库连接已建立,对'conn'对象执行'null'检查,以便您知道db是否已连接以及流程将到达何处。 – Sridhar

回答

1

您的HTML必须包含在<form> ... </form>中,他负责收集信息并发送服务器端。如果你没有指定提交的目的地址,它会认为它是当前页面(这对servlet来说工作得很好),如果你没有指定方法,默认情况下它会通过GET方法发送它。

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

相关问题