ホームページ >バックエンド開発 >C++ >MVC 4 で C# を使用して SQL 挿入後に挿入された ID を取得する方法

MVC 4 で C# を使用して SQL 挿入後に挿入された ID を取得する方法

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-17 22:05:13876ブラウズ

How to Get the Inserted ID After an SQL Insert Using C# in MVC 4?

C# での SQL 挿入操作の後に新しく挿入された ID を取得する (MVC 4)

この記事では、MVC 4 アプリケーション内で C# を使用して SQL Server テーブルにデータを挿入し、同時に新しく挿入されたレコードの ID を取得する方法を説明します。

コード例: データの挿入と 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。