この記事では、MVC 4 アプリケーション内で C# を使用して SQL Server テーブルにデータを挿入し、同時に新しく挿入されたレコードの ID を取得する方法を説明します。
次のコード スニペットは、2 つの異なるアプローチを使用してこれを実現する方法を示しています。
方法 1: SCOPE_IDENTITY()
を使用する (SQL Server 2005 以降に適しています)
<code class="language-csharp">public class MemberBasicData { public int Id { get; set; } public string Mem_NA { get; set; } public string Mem_Occ { get; set; } } public int CreateNewMember(string Mem_NA, string Mem_Occ ) { using (SqlConnection con = new SqlConnection(Config.ConnectionString)) { using(SqlCommand cmd = new SqlCommand("INSERT INTO Mem_Basic(Mem_Na,Mem_Occ) VALUES(@na,@occ);SELECT SCOPE_IDENTITY();", con)) { cmd.Parameters.AddWithValue("@na", Mem_NA); cmd.Parameters.AddWithValue("@occ", Mem_Occ); con.Open(); int newId = Convert.ToInt32(cmd.ExecuteScalar()); if (con.State == System.Data.ConnectionState.Open) con.Close(); return newId; } } }</code>
方法 2: OUTPUT
句を使用する (SQL Server 2005 以降)
この方法は、その明瞭さと効率の点で一般に好まれます。
<code class="language-csharp">using(SqlCommand cmd = new SqlCommand("INSERT INTO Mem_Basic(Mem_Na,Mem_Occ) OUTPUT INSERTED.ID VALUES(@na,@occ)", con)) { cmd.Parameters.AddWithValue("@na", Mem_NA); cmd.Parameters.AddWithValue("@occ", Mem_Occ); con.Open(); int newId = (int)cmd.ExecuteScalar(); if (con.State == System.Data.ConnectionState.Open) con.Close(); return newId; }</code>
どちらのメソッドでも、データを挿入し、新しく生成された ID を返すという同じ結果が得られます。 一般に、OUTPUT
句の方が効率的で読みやすいと考えられています。 Config.ConnectionString
を実際の接続文字列に置き換えることを忘れないでください。
以上がMVC 4 で C# を使用して SQL 挿入後に挿入された ID を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。