我在c#程序中向数据库中插入了一条数据,该表的主键是自动增长的,现在要如何去获取刚刚插入的这条数据的主键值呢?

解决方案 »

  1.   

    如果是 sql server,那么在同一个事务中执行 select @@identity这样的低层的操作代码不好看,如果你用 entity framework 或者 nhibernate,那么保存之后,对象的状态自动被更新,你可以通过对象属性得到这个值
      

  2.   

    呵呵,我刚刚转了个贴,欢迎去看http://blog.csdn.net/kankanwenzi/archive/2010/11/07/5993215.aspx
      

  3.   

    用select语句查出来不可以吗?
      

  4.   


    SQL SERVER要怎么做呢 
      

  5.   

    Sql块操作
     string sql="insert table(f1,f2) values(v1,va2) "sql+="  select @@identity ";
     
      

  6.   

    用事务 begin transaction     insert...    select max(id) from tb       commit transaction
      

  7.   

    Scope_identity
    实例:
    http://www.cnblogs.com/yank/archive/2008/04/16/1156713.html
    select SCOPE_IDENTITY()
    返回上面操作的数据表最后row的IDENTITY 列的值;
    返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。
    SELECT   @@IDENTITY
    返回上面操作最后一个数据表的最后row的IDENTITY 列的值;
    创建表:
    create table T_User(F_ID int identity(1,1) not null,F_Name varchar(20) not null)
    插入数据:
    insert into T_User(F_Name) values('我是谁') Select SCOPE_IDENTITY()
    存储过程:
    CREATE PROCEDURE [dbo].[sp_User](@F_Name int) AS
    begin tran Insertinto_T_User
    Insert into  dbo.T_User(F_Name) values(@F_Name)
    Select SCOPE_IDENTITY()