可以考虑这样做: 一、把b页面选中的值的唯一标识(如:主键)传到后台、多选的时候就用特殊符号隔开、如"1,2,3,5"这样! 二、后台解析前台传入的值、格式必须正确:1,2,3,5 这样能运行下面的sql。 三、insert into A表 select b.要插入的字段... from B表 b where b.id(主键) in(前台传入的id值);用insert into select 语法、搞定! 但是记住、前台传入的、必须是能保证能select查询出的数据跟选择的数据一致! LZ可以这样试试!
关键是我页面传过来的ID不保存到A表中
你传过来的id是为了去查询的! 你把整个b表都查询出来了、想保存什么到a表就保存什么字段就行了!
你的语句有问题!!!
insert into wuliao select b.name,b.danwei,b.xiaghao,b.yanse from stock_sum b where b.stock_id in (3)如果有多个就是 b.stock_id in (3,4,7)不是你这样用的——b.stock_id in b.stock_id = 3! 这样是错的!
我先试着理解一下你的需求、
是不是在a表的信息列表页面、点击添加
弹出b表的全部信息、“然后选中某一条添加到A表,然后批量选中添加到A表!” 是不是这样理解的、用户可以选择一条b表的信息、也可以选择多条b表的信息?至于你说的:
“可是我现在保存一条数据时是先获得值!
然后把值给一个变量,
再把这个变量set给字段”
是不是说、选择好了b表的数据、点击添加的时候要set一个值、比如时间或者操作人什么的?是否只是一个值、并且选择很多条的时候、这个值也不会变(时间值的话、不考虑这种情况)
先跟你了解一下需求、然后在给你解决问题!
你是用什么框架,JDBC,还是hibernate.JDBC
void addBatch(String sql)
throws SQLException将给定的 SQL 命令添加到此 Statement 对象的当前命令列表中。通过调用方法 executeBatch 可以批量执行此列表中的命令。 hibernate类似这样:
beginTransaction();
getHibernateTemplate().execute(new HibernateCallback(poList) {
public Object doInHibernate(Session session) throws HibernateException {
Object[] es = this.val$poList.toArray();
for (int i = 0; i < es.length; ++i) {
session.saveOrUpdate(es[i]);
if (i % GenericDaoImpl.this.batchSize != 0) {
continue;
}
session.flush();
session.clear();
}
return null;
}
});
commitTransaction();
可以考虑这样做:
一、把b页面选中的值的唯一标识(如:主键)传到后台、多选的时候就用特殊符号隔开、如"1,2,3,5"这样!
二、后台解析前台传入的值、格式必须正确:1,2,3,5 这样能运行下面的sql。
三、insert into A表 select b.要插入的字段... from B表 b where b.id(主键) in(前台传入的id值);用insert into select 语法、搞定!
但是记住、前台传入的、必须是能保证能select查询出的数据跟选择的数据一致!
LZ可以这样试试!
你传过来的id是为了去查询的!
你把整个b表都查询出来了、想保存什么到a表就保存什么字段就行了!
insert into wuliao select b.name,b.danwei,b.xiaghao,b.yanse from stock_sum b where
b.stock_id in (3)如果有多个就是
b.stock_id in (3,4,7)不是你这样用的——b.stock_id in b.stock_id = 3!
这样是错的!