我正在尝试使用Struts2在MySQL数据库中一次插入多行(从DB检索的动态行)
为此,首先我从数据库表中检索HTML表中的数据(行是动态的,这取决于它们在数据库中为特定用户ID的条目数)。
在我的HTML表格中,有六列,其中五列是从DB检索的,最后一列是条目,用户必须填写。
现在我想将这整个数据(从DB中检索的行数与最后一列的新条目一样多)一次插入到另一个DB表中。
现在我能够插入整个数据但它不会存储在DB表中的单独行中,它只是以逗号分隔存储在一行中。
任何帮助将不胜感激...提前致谢!!
答案 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之前,我将特定行的每个数据条目分开......并且它正在工作! :)