最后的据点

Think it,Plan it,Build it,Make it,Happy it,Enjoy it! 格物,诚意,志存高远,脚踏实地,让精益求精成为习惯!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

Posted on 2009-04-01 19:40  最后的据点  阅读(797)  评论(0编辑  收藏  举报

     获取刚刚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