Java 在mysql中将多个复选框值插入到单独的行中

Java 在mysql中将多个复选框值插入到单独的行中,java,mysql,jsp,servlets,resultset,Java,Mysql,Jsp,Servlets,Resultset,我需要帮助在mysql数据库中将多个复选框值插入到单独的行中 工作流程: 1.用户选中产品复选框,并在特定复选框旁边的文本框中输入有关产品的说明 2.选中复选框后,用户点击保存按钮 3.单击“保存”后,应将产品详细信息插入数据库。 注意:用户可以选择多个复选框值 问题: 我已使用常规方法插入值,但只有一个复选框值被插入到数据库中。单击“保存”按钮后,我需要将多个复选框值及其文本框值作为单独的行插入到数据库中 这是我的密码 products.jsp <%@page import="j

我需要帮助在mysql数据库中将多个复选框值插入到单独的行中

工作流程:

1.用户选中产品复选框,并在特定复选框旁边的文本框中输入有关产品的说明

2.选中复选框后,用户点击保存按钮

3.单击“保存”后,应将产品详细信息插入数据库。 注意:用户可以选择多个复选框值

问题:

我已使用常规方法插入值,但只有一个复选框值被插入到数据库中。单击“保存”按钮后,我需要将多个复选框值及其文本框值作为单独的行插入到数据库中

这是我的密码

products.jsp

    <%@page import="java.util.List"%>
    <%@page import="web.Products"%>
    <%@page import="java.util.ArrayList"%>
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
     <form method="post" action="Save_Products">   
<b>          
            Brand Name:<font color="green">
            <% String brand_name=(String)session.getAttribute("brand_name");
       out.print(brand_name);%> 
        <c:set var="brand_name" value="brand_name" scope="session"  />
       </font></b>         
            <table>            
                <tr>                
                    <th> Products</th> 
                    <th> Description </th>
                </tr>
                <tr>
               <td> <b><%
      List<Products> pdts = (List<Products>) request.getAttribute("list");
      if(pdts!=null){
        for(Products prod: pdts){
           out.println("<input type=\"checkbox\" name=\"prod\" value=\""  + prod.getProductname() + "\">"  + prod.getProductname()+"<br>");
            } %> </b></td>   

            <td><%for(Products prod: pdts){
            out.println("<input type=\"text\" name=\"desc\" style=\"width:50px; height:22px\"/><br/>"); 
        } 

      }  
            %> </td>  

        </tr>
        <br/>
        <br/>
        <tr><td align="center">  <input type="submit" value="Save" name="save"/> </td></tr> 
            </table>
    </form>
    </body>
    </html>

在servlet中,使用
request.getParameterValues(“prod”)
获取接收到的所有输入的数组
request.getParameter(“prod”)
将只返回一个。您的
desc
值也是如此

然后循环遍历这些值并将它们全部插入数据库

String [] prod_list = request.getParameterValues("prod");
String [] desc_list = request.getParameterValues("desc");
// set up your query

PreparedStatement prep = connection.prepareStatement(sql);

// just a precaution here getting min so we do not get outofbounds exception on one of the arrays
// both arrays should be of same size - if not, something is wrong on your jsp logic
int num_values = Math.min(prod_list.size(), desc_list.size());

int count_updated = 0;
for(int i = 0; i < num_values; i++){
    prep.setString(1, brand_name);
    prep.setString(2, prod_list[i]);
    prep.setString(3,desc_list[i]);
    count_updated += prep.executeUpdate();
}

// Rest of your logic
String[]prod_list=request.getParameterValues(“prod”);
字符串[]desc_list=request.getParameterValues(“desc”);
//设置您的查询
PreparedStatement prep=connection.prepareStatement(sql);
//这里只是一个预防措施,获取min,这样我们就不会在其中一个数组上出现边界外异常
//这两个数组的大小应该相同——如果不是,那么jsp逻辑就有问题了
int num_values=Math.min(prod_list.size(),desc_list.size());
int count_updated=0;
对于(int i=0;i

这是使用
PreparedStatement
的一种更简单的方法。检查如何使用
PreparedStatement
执行批插入。应该开始了。

您的请求似乎发送了参数数组,如果是这种情况,您应该使用
request.getParameterValues(…)
而不是
request.getParameter(…)
,然后循环遍历此数组以在数据库中插入多行。谢谢!我明白了这个概念。你能指导我循环这些值吗?我刚刚用一些代码更新了我的答案,让你开始
String [] prod_list = request.getParameterValues("prod");
String [] desc_list = request.getParameterValues("desc");
// set up your query

PreparedStatement prep = connection.prepareStatement(sql);

// just a precaution here getting min so we do not get outofbounds exception on one of the arrays
// both arrays should be of same size - if not, something is wrong on your jsp logic
int num_values = Math.min(prod_list.size(), desc_list.size());

int count_updated = 0;
for(int i = 0; i < num_values; i++){
    prep.setString(1, brand_name);
    prep.setString(2, prod_list[i]);
    prep.setString(3,desc_list[i]);
    count_updated += prep.executeUpdate();
}

// Rest of your logic