1. ホーム
  2. c#

[解決済み] 最後に挿入されたIDを取得する方法は?

2022-04-20 07:39:24

質問

このようなコードがあります。

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();
}

このテーブルに挿入すると、自動インクリメントのint型主キーカラムである GamesProfileId 最後に挿入されたものを取得し、そのIDを使用して別のテーブルに挿入することができます。

解決方法は?

SQL Server 2005+では、挿入トリガーがない場合、挿入文(すべて1行、ここではわかりやすくするために分割)を次のように変更します。

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();