现在的位置: 首页 > 综合 > 正文

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

2012年03月21日 ⁄ 综合 ⁄ 共 1087字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.