如何使用Struts2在MySQL数据库中一次插入多行?

时间:2016-12-14 09:00:32

标签: javascript java mysql jsp struts2

我正在尝试使用Struts2在MySQL数据库中一次插入多行(从DB检索的动态行) 为此,首先我从数据库表中检索HTML表中的数据(行是动态的,这取决于它们在数据库中为特定用户ID的条目数)。
在我的HTML表格中,有六列,其中五列是从DB检索的,最后一列是条目,用户必须填写。

现在我想将这整个数据(从DB中检索的行数与最后一列的新条目一样多)一次插入到另一个DB表中。
现在我能够插入整个数据但它不会存储在DB表中的单独行中,它只是以逗号分隔存储在一行中。

任何帮助将不胜感激...提前致谢!!

2 个答案:

答案 0 :(得分:0)

您可以尝试批量Read Here执行记录 将execute更改为传递列表

public String execute() throws Exception 
{
    String ret = "SUCCESS";
    try
    {
        msg = db.Detailsdb.addMoreDetails(details);
        if(msg != null)
        {
            System.out.println(msg);
            return ret;
        }
        else 
            ret = "ERROR";
    }
    catch(Exception ex)
    {
        ex.printStackTrace();
    }
    return ret;
}

更改数据库逻辑以添加批次

public static  String addMoreDetails(List<Details> details) throws Exception
{  
    try
    {
     java.sql.CallableStatement cs = connect().prepareCall("{call addUpdMoreDetails(?,?,?,?,?,?,?,?,?)}");
     for(Details det : details) {
         cs.setString(1, "I");
         cs.setString(2, det.detailsId);
         cs.setString(3, det.userId);
         cs.setString(4, det.info_1);
         cs.setString(5, det.info_2);
         cs.setString(6, det.info_3);
         cs.setString(7, det.info_4);
         cs.setString(8, det.info_5);
         cs.registerOutParameter(9, Types.VARCHAR);
         cs.addBatch();
    }
    int counts[] = cs.executeBatch();
    if ( counts.length == details.size )
        return "someMEssage";
    else
        return null; 
   }
   catch(Exception ex)
   {
    return ex.toString();
   }
}

答案 1 :(得分:0)

感谢您的帮助......我找到了解决方案!! 在将数据发送到DB之前,我将特定行的每个数据条目分开......并且它正在工作! :)