一尘不染

如何获取最后插入的ID?

c#

我有以下代码:

string insertSql = 
    "INSERT INTO aspnet_GameProfiles(UserId,GameId) VALUES(@UserId, @GameId)";

using (SqlConnection myConnection = new SqlConnection(myConnectionString))
{
   myConnection.Open();

   SqlCommand myCommand = new SqlCommand(insertSql, myConnection);

   myCommand.Parameters.AddWithValue("@UserId", newUserId);
   myCommand.Parameters.AddWithValue("@GameId", newGameId);

   myCommand.ExecuteNonQuery();

   myConnection.Close();
}

当我插入此表时,我有一个名为auto_increment
int的主键列GamesProfileId,如何在此之后获取最后插入的一个,以便可以使用该ID插入另一个表?


阅读 267

收藏
2020-05-19

共1个答案

一尘不染

对于SQL Server 2005+,如果没有插入触发器,则将插入语句(全部一行,为清楚起见在此处拆分)更改为此

INSERT INTO aspnet_GameProfiles(UserId,GameId)
OUTPUT INSERTED.ID
VALUES(@UserId, @GameId)

对于SQL Server 2000,或者如果有插入触发器:

INSERT INTO aspnet_GameProfiles(UserId,GameId) 
VALUES(@UserId, @GameId);
SELECT SCOPE_IDENTITY()

然后

 Int32 newId = (Int32) myCommand.ExecuteScalar();
2020-05-19