我现在有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值。

解决方案 »

  1.   

    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 SCOPE_IDENTITY()使用ExecuteScalar这个返回
      

  2.   

    insert into T_TJJBB (grjkdabh,xm,xb,tjrq,zrys,zz,jktjbbh,zz_qt) values (@grjkdabh,@xm,@xb,@tjrq,@zrys,@zz,@jktjbbh,@zz_qt);select SCOPE_IDENTITY()
      

  3.   

    insert into 表名 values(xx,xx)select @@identity
      

  4.   


    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
      

  5.   

    int id= Convert.ToInt32(cmd.ExecuteScalar());
    SCOPE_IDENTITY() 返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值 
      

  6.   

    SQL中获得自增ID有三个方法:
    1.IDENT_CURRENT返回为任何会话和任何作用域中的特定表最后生成的标识值,不受作用域和会话的限制,而受限于指定的表.
    2.@@IDENTITY返回为当前会话的所有作用域中的任何表最后生成的标识值.
    3.SCOPE_IDENTITY返回为当前会话和当前作用域中的任何表最后生成的标识值.
    SCOPE_IDENTITY和@@IDENTITY返回在当前会话中的任何表内所生成的最后一个标识值.
    但SCOPE_IDENTITY只返回插入到当前作用域中的值
    @@IDENTITY不受限于特定的作用域.
    你可根据情况使用,不过建议使用IDENT_CURRENT
      

  7.   

    select @@identity,获取最后一次插入的标识值
      

  8.   

    数据库是DB2,SELECT @@IDENTITY和select SCOPE_IDENTITY()不能用,使用ExecuteScalar方法是正确的。问题已经解决,谢谢大家捧场。