java.sql.PreparedStatement在执行多行sql时如何返回新生成的键?

//a表2个字段,第一个字段是自增主键,b表只有一个字段,无主键sql="insertintoavalues(1)insertintobvalues(1)insertin... //a表2个字段,第一个字段是自增主键,b表只有一个字段,无主键
sql="insert into a values(1)insert into b values(1)insert into b values(1)"
ps=con.prepareStatement(sql,PreparedStatement.RETURN_GENERATED_KEYS);
ps.execute();
rs=ps.getGeneratedKeys();
rs.next();
至此抛出异常:必须执行才能返回结果
将3句sql顺序调换,结果仍然如此,请问在不拆sql的前提下如何获得a表返回的主键?
已经解决,通过批处理方式,先执行不需要获得键的语句,最后执行需要获得键的语句,即可获得最后的自增主键。
展开
 我来答
Oo海之蓝歌oO
2012-06-05 · 喜欢计算机有关的东东
Oo海之蓝歌oO
采纳数:244 获赞数:876

向TA提问 私信TA
展开全部
不可以,再查一次吧。执行insert返回的只有影响行数。
更多追问追答
追问
单句sql是可以返回主键值的,执行多句就不行么?
追答
你想返回的是多个,他怎么知道你要第一个?
实在不行拿到游标操作吧。
bd9006
2012-06-05 · TA获得超过2.5万个赞
知道大有可为答主
回答量:4.8万
采纳率:63%
帮助的人:1.6亿
展开全部
不拆分SQL,也要给一下断句吧,如;符号什么的。
更多追问追答
追问
已经试过了,和断句无关.....分号、事物、BEGIN END都试过了
追答
ps.executeUpdate();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式