首页 SQLServer 没有返回结果集 select @@identity

没有返回结果集 select @@identity

作者:胡同里的砖头 围观群众:929 更新于:2017-04-25

当我们往设有自增序列的表中插入数据时,有时候我们往往希望执行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】
  • 非特殊说明,本文版权归【胡同里的砖头】个人博客 所有,转载请注明出处.
留言评论
站点声明:
1、本站【胡同里的砖头】个人博客,借鉴网上一些博客模板,取其各优点模块自行拼装开发,本博客开发纯属个人爱好。
2、所有笔记提供给广大用户交流使用,可转载,可复制,纯个人开发所遇问题锦集记录使用
Copyright © huzlblog.com All Rights Reserved. 备案号:苏ICP备2021056683号-8