求教:select SCOPE_IDENTITY失效!

sarah_jing 2012-05-31 01:38:08
我开发一个项目,和数据库取值用的是数据集,不是存储过程。一个表叫equipment,它的ID是自增长的,我要执行一个数据插入后搜索当时的最末ID是什么,于是我编写一个insert语句后跟着用select SCOPE_IDENTITY来查询ID,但是这个时候在数据库中可以查询到正确的数,但是在程序里面跟踪断点,却发现返回的ID数是1。我把具体SQL语句和在程序中调用的代码贴出来:
sql: INSERT INTO equipment
(equipmentnum)
VALUES (@equipmentnum);
SELECT equipmentid FROM equipment WHERE (equipmentid = SCOPE_IDENTITY())
我把这个数据集命名为:InsertQueryforeq
程序里面:
equipmentid = Convert.ToInt32(taeq.InsertQueryforeq("equipmentnum"));
就是在这里跟踪断点,发现返回是1,但是把这句SQL在数据库里面新建个文件进行查询,却可以显示正确的数,我非常困惑。而且我在网上搜索好久,就算替换成SELECT IDENT_CURRENT('equipment')也是同样情况
曾经有类似的帖子,提到触发器神马的,但是我始终操作一张表,插入后直接查询,难道和触发器有关?
希望有类似经验的达人们给予指教,万分感谢!


...全文
311 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sarah_jing 2012-06-01
  • 打赏
  • 举报
回复
自己解决了,结贴啦
sarah_jing 2012-05-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
应该是 select @@IDENTITY
楼主搞错了
[/Quote]
刚刚按照1楼的把SQL语句写成:
INSERT INTO equipment
(equipmentnum)
VALUES (@equipmentnum);
SELECT @@IDENTITY,但是还是出现了和上面一样的情况...崩溃的是放在数据库执行,这三种都能出来个正常数字。还有什么可能性呢。说一下我要改的这个数据集的资料哈,原来数据库中字段长度和类型需要修改,所以在改完数据库后把数据集重新生成了一遍,方法语句都不变,就是选一条以前写在数据集里的方法,然后点右键配置,再下一步到完毕的修改。在以前字段没改之前还是好用的,但是改完之后,方法重新生成完毕之后,就出现这种情况,难道是.NET还保留上一次字段的记忆?
ycproc 2012-05-31
  • 打赏
  • 举报
回复


SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY]
xiaoyuan402 2012-05-31
  • 打赏
  • 举报
回复
应该是 select @@IDENTITY
楼主搞错了

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧