如何使用 Struts2 在 MySQL 数据库中一次插入多行?
How to insert multiple rows at once in MySQL DB using Struts2?
我正在尝试使用 Struts2.
在 MySQL 数据库中一次插入多行(从数据库检索的动态行)
为此,首先我从数据库 table 中检索 HTML table 中的数据(并且行是动态的意味着它取决于特定用户 ID 在数据库中有多少条目).
在我的 HTML table 中,有六列,其中五列是从数据库中检索的,最后一列条目,用户必须填写。
现在我想一次性将整个数据(从数据库中检索到的行数与最后一列的新条目一样多)插入另一个 table 数据库。
现在我可以插入整个数据,但它没有存储在数据库中的单独行中 table,它只是存储在用逗号分隔的一行中。
任何帮助将不胜感激...提前致谢!!
您可以尝试批量执行记录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();
}
}
感谢大家的帮助...我找到了解决方案!!
在将数据发送到 DB 之前,我将每个数据条目拆分为特定行......并且它正在工作!!! :)
我正在尝试使用 Struts2.
在 MySQL 数据库中一次插入多行(从数据库检索的动态行)
为此,首先我从数据库 table 中检索 HTML table 中的数据(并且行是动态的意味着它取决于特定用户 ID 在数据库中有多少条目).
在我的 HTML table 中,有六列,其中五列是从数据库中检索的,最后一列条目,用户必须填写。
现在我想一次性将整个数据(从数据库中检索到的行数与最后一列的新条目一样多)插入另一个 table 数据库。
现在我可以插入整个数据,但它没有存储在数据库中的单独行中 table,它只是存储在用逗号分隔的一行中。
任何帮助将不胜感激...提前致谢!!
您可以尝试批量执行记录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();
}
}
感谢大家的帮助...我找到了解决方案!! 在将数据发送到 DB 之前,我将每个数据条目拆分为特定行......并且它正在工作!!! :)