在JSP中使用复选框从MySQL中删除多条记录

问题描述 投票:0回答:1

我正在尝试使用复选框从 MySQL 数据库中删除多行。这是我的代码。我只能逐行删除而不带复选框。

displayfood.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>

<%@page import="java.sql.*" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link rel="stylesheet" type="text/css" href="stylesheet_2.css">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<script type="text/javascript" src="validation.js"> </script>
<title>All Food Menu</title>
</head>
<body>


  <!--#############  HEADER  ############# -->
 <table id="t1Body_food">
    <tr><td colspan="5">    
        
        <table class="table_header" align="center" >
            <tr> <td class="tbody-logo_food"  align="right" valign="bottom"> 
             
            <form name="myForm" action="searchFood.jsp" onsubmit="return searchvalidate()" method="post">
               <input type="text" name="type" placeholder="Search"> 
            

    
    <input name="search" type="submit" value="search">
     <input type="button" value="Logout"  onclick="logoutpage()"/>
    
        
         </form></td></tr>
        
            </table> </td> </tr>
        
    <tr>

    <td class="td1-header"id="rice" > <a href="main.html" class="link-header"> Home </a></td>
   <td class="td1-header">          <a href="allFood.jsp" class="link-header"> Food </a></td>
  <td class="td1-header">           <a href="reservation.html" class="link-header"> Reservation </a></td>
  <td class="td1-header">           <a href="about_us.html" class="link-header"> About Us </a></td>
  <td class="td1-header">           <a href="contact_us.html" class="link-header"> Contact us </a></td>
 </tr>



   </table>
            
  <table id="t2Body"  >
      <tr><td colspan="5"  id="rice"><hr color="orange" size="13"></td>
</tr>

<tr>    <td class="td_2header" > Name</td>
    <!-- <td class="td_2header" >  Type</td>  
    <td class="td_2header" >  Picture </td>  -->
    <td class="td_2header" >  Description </td>
    <td class="td_2header" >  Price </td>
    <td  align="right" colspan="4"> <a target="_blank" href="addItem_Form.jsp">
            <button name="AddItem" > +Add New Food Menu </button> </a> 
        
        </td>
</tr>

  <tr><td colspan="5"  id="rice"><hr color="orange" size="13"></td>
 </tr>

 
  <%
  String id= request.getParameter("hiddenID");

    try {
      // Step1: Load JDBC Driver
      Class.forName("com.mysql.jdbc.Driver");
      // Step 2: Define Connection URL
      String connURL ="jdbc:mysql://localhost/restaurant?user=root& password=Password"; 
      // Step 3: Establish connection to URL
      Connection conn =   DriverManager.getConnection(connURL); 
      // Step 4: Create Statement object
      Statement stmt = conn.createStatement();
      // Step 5: Execute SQL Command
      
      PreparedStatement pstmt =conn.prepareStatement("Select * from   food");
        
       ResultSet rs=pstmt.executeQuery();
      
     // out.println("<table id='t2Body' >");
      

    
       while (rs.next())
       {     id=rs.getString("ID");
          String name=rs.getString("name");
          String type=rs.getString("type");
          String pic=rs.getString("picture");
          int price=rs.getInt("price");
          String desc=rs.getString("description");
          
          
        
//  out.println("<tr> <td class=td_2border><div   class=food_name>"+id+"   </div>");
         
 out.println(" <tr>s<td class=td_2border><div class=food_name>"+name+"</div>");
          out.println(" <div><img src=\" " + pic+"\" "+"/></div>");
          out.println("<div>"+type+"</div><br>");
          out.println("<div><hr color=orange></div> ");
          out.println("</td>");
          out.println("<td class=td2_desc><br>"+ desc+"</td>");
          out.println("<td class=td_2border><br> $"+price+"</td>");
          %> 
        
        <td class=td_2border> 
                    <br>
             <form action="delete.jsp" method="get"> 
             <input type="checkbox" name="hiddenID" value="<%=id%>"> 
             <input type="hidden" name="hiddenID" value="<%=id%>"> 
              <input type="submit" Value="Delete" name ="delete"/>
    <%--  <input type="submit" value="<%=id %>" name="check" />  --%>
        
        </form>
    </td>
    <td class=td_2border><br>
        <form action="update_Form.jsp" method="get">
        <input type="hidden" name="hiddenID" value="<%=id%>" />
            <input type="submit" value="Update" name="updateBtn" /> 
        </form>
    </td>  
    </tr>         
          <%
        
     }
     %>
    
     <tr>
        <td colspan="5" align="right">
                    
<form action="delete.jsp" method="get">
    <%--  <input type="hidden" name="hiddenID" value="<%=id%>" > --%>
        
         <input type="submit" name="submit" value="confirm" >


        </form>
        
        </td>
     </tr>

     
  </table>
      <%
  }
catch(Exception e ){
out.println(e);}

%>

</body>
</html>

删除.jsp:

<%@page import="java.sql.*"%>
<% 
String [] id = request.getParameterValues("hiddenID");

// String id= request.getParameter("hiddenID");
  if (id != null && id.length != 0) {
    out.println("You have selected: ");
        for (int i = 0; i < id.length; i++) {
        out.println(id[i]); 
    } //end for loop
}// end if

      
        Connection conn = null;
    try {
    Class.forName("com.mysql.jdbc.Driver");
    // Step 2: Define Connection URL
    String connURL = "jdbc:mysql://localhost/restaurant?user=root&password=Password";
    // Step 3: Establish connection to URL
    conn = DriverManager.getConnection(connURL);

    String sqlStr = "Delete from food WHERE id =?";
    PreparedStatement pstmt = conn.prepareStatement(sqlStr);
    
    //pstmt.setArray(1,Integer.parseInt(id));
    //pstmt.setInt(1,Integer.parseInt(id));
    // for (int i = 0; i < id.length; i++)
//if (id !=null){
    //  for (int i = 0; i < id.length; i++){
        //   pstmt.setString(1, id[i]);
        
             
             pstmt.setString(1, id[i]); 
             int rec=pstmt.executeUpdate();
             conn.close();
                
             if (rec>0){
                    %>
                        <script>
                        alert("record is deleted!");
                         window.location.reload("allFood2.jsp");
                        </script>
                    <%
                
                } //end if
                
                else{
                    %>
                    
                    <script>
                    alert(" no record is deleted!");
                     window.location.reload("allFood2.jsp");
                    </script>
                    
                <%
                } //end else
                    
    }//end try
    


     catch (Exception e) {
                out.println(e.getMessage());
            }
        

 %>
java mysql jsp jdbc
1个回答
0
投票

您可以创建一个字符串参数来保存

ids
的 CSV 值,然后修改查询以用作参数。

String ids = "";
if (id != null && id.length != 0) {
    out.println("You have selected: ");

    for (int i = 0; i < id.length; i++) {
        ids += id[i] +",";
        out.println(id[i]); 
    } //end for loop
}// end if

if (ids .endsWith(","))
    ids = ids.substring(0, ids .length() - 1);

try {
if (!"".equals(ids){ 
    String sqlStr = "Delete from food WHERE id in (?)";
    PreparedStatement pstmt = conn.prepareStatement(sqlStr);

    pstmt.setString(1, ids); 

    int rec=pstmt.executeUpdate();
    conn.commit();
}
} finally {
    if (pstmt != null)
       pstmt.close();
    if (conn != null)
      conn.close();
}
© www.soinside.com 2019 - 2024. All rights reserved.