当我们往设有自增序列的表中插入数据时,有时候我们往往希望执行insert语句后直接能返回这个新生成的数据的id值(假如id就是被设置为自增的序列),这个问题在网上查了好久,困惑了我好几天,终于找到一个能够解决的方案,在此总结一下,分享给大家!
insert message values(?,?,?) select @@identity
上述代码在SQL Server 2005中能正常得到最新添加的记录的ID. 但在JSP中执行上述语句会抛出"该语句没有返回结果"的异常.
这样的语句其实是两个sql语句,第一句插入数据,第二句返回最近插入数据后自增序列生成的值。如果用executeUpdate()方法执行上述语句,返回的结果依然是影响行数,但用executeQuery()就抛异常:该语句没有返回结果集 照理,执行2个语句,返回的当然是最后的select结果,所有我们应该要用executeQuery()取得结果集,但为了避免异常,只要在语句前加 SET NOCOUNT ON ,不显示影响行数,就能解决问题。完整语句如下:
String sql = "SET NOCOUNT ON insert message values(?,?,?) select @@identity";
- 本文标题: 没有返回结果集 select @@identity
- 文章分类:【SQLServer】
- 非特殊说明,本文版权归【胡同里的砖头】个人博客 所有,转载请注明出处.