获取刚刚insert的数据的自增长id

     获取刚刚insert的数据的自增长id,有很多方法,常用的是insert语句完之后,后面再跟一个select Scope_Identity(),比如像下面这样的sql:

insert   into  ChangeNodeWorkflow(ProjID,Content)  values ( @ProjID , @Content );
select Scope_Identity ();

 然后大家通过企业库db.ExecuteScale()方法就可以拿到刚刚生成的自增长ID,下面介绍另外一种方法,异曲同工:

insert   into  ChangeNodeWorkflow(ProjID,Content)  values ( @ProjID , @Content );
select   @ChangeID   =   Scope_Identity ();

大家观察一下,就可以看出,后面这句是用了一个参数的方式来返回我们所需要的值的,那么我们在代码中如何获取该参数的值呢?如下所示:

public  static  int  InsertChangeNodeWorkflow(string content, string projID)
{
        
Database  db  =  DatabaseFactory.CreateDatabase();
        DbCommand dbCommand 
=  db.GetSqlStringCommand(sql_InsertChangeNodeWorkflow);
        db.AddInParameter(dbCommand, "
@Content ", DbType.String, content);
        db.AddInParameter(dbCommand, "
@ProjID ", DbType.String, projID);
        db.AddOutParameter(dbCommand, "
@ChangeID ", DbType.Int32,  4 );

        db.ExecuteNonQuery(dbCommand);

        
int  changeId  =  ( int )db.GetParameterValue(dbCommand, " @ChangeID ");

        
return  changeId;

}

 细心的读者会发现,@ChangeID这个输出参数是用db.AddOutParameter()的方法设置的

参数中的值,如何获取呢?db.GetParameterVlaue()函数就是干这个活的,呵呵

 

lastbeachhead

你可能感兴趣的:(insert)