我现在有5个数据库中的表组成一个实体表单,需要用数据库中生的的自增ID值把它们统一起来做查询,问题是现在无法在c#程序中获得这个生成的ID值。请各位有经验的大大帮忙指点一二。
获得ID的sql语句为:
insert into T_TJJBB (grjkdabh,xm,xb,tjrq,zrys,zz,jktjbbh,zz_qt) values (@grjkdabh,@xm,@xb,@tjrq,@zrys,@zz,@jktjbbh,@zz_qt);
values ( identity_val_local());
ExecuteNonQuery方法返回的不是这个ID值。
获得ID的sql语句为:
insert into T_TJJBB (grjkdabh,xm,xb,tjrq,zrys,zz,jktjbbh,zz_qt) values (@grjkdabh,@xm,@xb,@tjrq,@zrys,@zz,@jktjbbh,@zz_qt);
values ( identity_val_local());
ExecuteNonQuery方法返回的不是这个ID值。
values ( identity_val_local());select SCOPE_IDENTITY()使用ExecuteScalar这个返回
insert into T_TJJBB (grjkdabh,xm,xb,tjrq,zrys,zz,jktjbbh,zz_qt) values (@grjkdabh,@xm,@xb,@tjrq,@zrys,@zz,@jktjbbh,@zz_qt);
values ( identity_val_local());SELECT @@IDENTITY/*
使用ExecuteScalar
SCOPE_IDENTITY() 返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值
1.IDENT_CURRENT返回为任何会话和任何作用域中的特定表最后生成的标识值,不受作用域和会话的限制,而受限于指定的表.
2.@@IDENTITY返回为当前会话的所有作用域中的任何表最后生成的标识值.
3.SCOPE_IDENTITY返回为当前会话和当前作用域中的任何表最后生成的标识值.
SCOPE_IDENTITY和@@IDENTITY返回在当前会话中的任何表内所生成的最后一个标识值.
但SCOPE_IDENTITY只返回插入到当前作用域中的值
@@IDENTITY不受限于特定的作用域.
你可根据情况使用,不过建议使用IDENT_CURRENT