获取刚刚insert的数据的自增长id,有很多方法,常用的是insert语句完之后,后面再跟一个select Scope_Identity(),比如像下面这样的sql:
insert into ChangeNodeWorkflow(ProjID,Content) values(@ProjID,@Content);
select Scope_Identity();
select Scope_Identity();
然后大家通过企业库db.ExecuteScale()方法就可以拿到刚刚生成的自增长ID,下面介绍另外一种方法,异曲同工:
insert into ChangeNodeWorkflow(ProjID,Content) values(@ProjID,@Content);
select @ChangeID = Scope_Identity();
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);
{
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()函数就是干这个活的,呵呵