C#在Insert上返回Identity

时间:2013-11-18 21:08:46

标签: c# sql

我有一个问题,我需要返回我刚刚在c#中创建的记录的标识,并将其保存为整数。 我在互联网上看到了大量的例子,但我似乎无法根据我的需要调整它。 任何帮助表示赞赏

cmprawf.CommandText = "INSERT INTO profiion( // Code that inserts in the right place )";
cmprawf.ExecuteNonQuery();
cnTB.Close();

5 个答案:

答案 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的最后信息

http://technet.microsoft.com/en-us/library/ms190315.aspx

答案 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。