如何获得新插入的数据的“ID标识”的值?(SQL Server)

iamcrc 2003-07-31 08:44:25
如何获得新插入的数据的“ID标识”的值?

我要同时插入数据到两个表,同时第二个表需要记录第一个表的ID标识(为了关联),所以插入第2个表数据前需要获得了第1个表中新数据的“ID标识”的值

例:表a的字段:id(标识),aname(a的名字)
表b的字段:id(标识),aid(a表中对应字段的id),bname(b的名字)
要插入一条记录,先插入a表,这时候a会自动产生一个标识值,而后再插入b表,这时候就需要获得a产生的标识值并插入b表。

问:程序如何获得a自动产生的这个标识值

我用存储过程,调用方用C#,请问应该如何实现?
...全文
56 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jiezhi 2003-07-31
  • 打赏
  • 举报
回复
public static object ExeScalar(string Sql)
{
try
{
SqlCommand cmd=new SqlCommand(Sql,GetConn());
return cmd.ExecuteScalar();
}
catch(Exception ee)
{
throw ee;
}
}

///
string mySql="insert into p_mbjd(mbbh,jdlx,ch,sd)values('"+txtMbbh.Text.Trim()+"','LinkPoint',"+iCH+","+iSD+");"+"select @@identity";
int id=Convert.ToInt32(UsualProcess.ExeScalar(mySql));
jiezhi 2003-07-31
  • 打赏
  • 举报
回复
mySql="insert into ...;select @@identity";
...
int id=Convert.ToInt32(ExecuteScale(mySql));
oh_love 2003-07-31
  • 打赏
  • 举报
回复
@@IDENTITY
brightheroes 2003-07-31
  • 打赏
  • 举报
回复
你这个问题很容易实现。
用select @@identity就可以了。@@identity是SQL server专门用来完成这个工作的东东。
例子如下:
string insertStr = "INSERT INTO Table1()values();select @@identity";
SqlCommnad cm = new sqlcommand(insertStr,sqlconnection);
sqlconnection.open();
SqlDataReader reader = cm.ExecuteReader();
while (reader.Read())
{

object obValue = reader.GetValue(0);
ID = Convert.ToInt32(obValue.ToString());
}


id就是你要的结果
相关推荐
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2003-07-31 08:44
社区公告

让您成为最强悍的C#开发者