我有一个问题,我需要返回我刚刚在c#中创建的记录的标识,并将其保存为整数。 我在互联网上看到了大量的例子,但我似乎无法根据我的需要调整它。 任何帮助表示赞赏
cmprawf.CommandText = "INSERT INTO profiion( // Code that inserts in the right place )";
cmprawf.ExecuteNonQuery();
cnTB.Close();
答案 0 :(得分:4)
您可以向批次添加SELECT
并返回新创建的标识符:
cmprawf.CommandText = "INSERT INTO profiion( // Code that inserts in the right place );" +
"SELECT SCOPE_IDENTITY()";
int newID = (int)cmprawf.ExecuteScalar();
cnTB.Close();
答案 1 :(得分:1)
将SELECT SCOPE_IDENTITY
添加到您的查询中,然后您可以通过ExecuteScalar
检索它:
string sql = @"INSERT INTO profiion( // Code that inserts in the right place );
;SELECT CAST(scope_identity() AS int)";
cmprawf.CommandText = sql;
int newID = (int)cmprawf.ExecuteScalar();
答案 2 :(得分:0)
您只需选择SCOPE_IDENTITY并使用ExecuteScalar检索它。
cmprawf.CommandText = "INSERT INTO profiion( // Code that inserts in the right place ); SELECT SCOPE_IDENTITY();";
int id = cmprawf.ExecuteScalar();
cnTB.Close();
答案 3 :(得分:0)
如果您的数据库是SQL Server,那么
cmprawf.CommandText =“INSERT INTO profiion(//插入正确位置的代码); SELECT SCOPE_IDENTITY()”; int yourId =(int)cmprawf.ExecuteScalar(); cnTB.Close();
如果您想使用参数(更好),您可以随时查看Microsoft的最后信息
答案 4 :(得分:0)
您可以使用sql命令的返回值。每个存储过程都可以具有int类型的返回值,您可以按如下方式检索它:
SqlParameter returnParameter = cmd.Parameters.Add("RetVal", SqlDbType.Int);
returnParameter.Direction = ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();
int id = (int) returnParameter.Value;
代码是从这篇文章的第二个答案中复制的: Get Return Value from Stored procedure in asp.net
此外,在您的存储过程中,您可以通过调用SCOPE_IDENTITY()
函数来获取插入行的ID。