ホームページ > データベース > mysql チュートリアル > C# MVC 4 を使用して SQL Server に新しく挿入されたレコードの ID を取得する方法

C# MVC 4 を使用して SQL Server に新しく挿入されたレコードの ID を取得する方法

Linda Hamilton
リリース: 2025-01-17 01:46:08
オリジナル
936 人が閲覧しました

How to Retrieve the ID of a Newly Inserted Record in SQL Server using C# MVC 4?

C# MVC 4 を使用して新しく挿入された SQL Server レコードの ID を取得する

問題:

MVC 4 アプリケーションで C# を使用して SQL Server テーブルにデータを挿入し、新しく追加されたレコードの ID を取得するにはどうすればよいですか?

解決策:

SQL Server のバージョンに応じて、主に 2 つのアプローチがあります。

SQL Server 2005 以降:

SQL Server 2005 以降のバージョンで最も効率的な方法は、OUTPUT 句を利用する方法です。

<code class="language-csharp">using (SqlCommand cmd = new SqlCommand("INSERT INTO Mem_Basic(Mem_Na, Mem_Occ) OUTPUT INSERTED.ID VALUES (@na, @occ)", con))
{
    // ... parameter assignments for @na and @occ ...
    int newId = (int)cmd.ExecuteScalar();
    return newId;
}</code>
ログイン後にコピー

この 1 つの SQL ステートメントはデータを挿入し、新しく生成された ID をすぐに返します。

古い SQL Server バージョン (2005 年より前):

古い SQL Server バージョンの場合は、INSERT ステートメントとそれに続く SCOPE_IDENTITY():

という 2 つの部分からなるクエリが必要です。
<code class="language-csharp">using (SqlCommand cmd = new SqlCommand("INSERT INTO Mem_Basic(Mem_Na, Mem_Occ) VALUES (@na, @occ); SELECT SCOPE_IDENTITY();", con))
{
    // ... parameter assignments for @na and @occ ...
    int newId = Convert.ToInt32(cmd.ExecuteScalar());
    return newId;
}</code>
ログイン後にコピー

このアプローチでは、まずデータを挿入し、次に SCOPE_IDENTITY() を使用して現在のセッションおよびスコープ内で最後に挿入された行の ID を取得します。 SCOPE_IDENTITY() は現在のセッションとスコープでのみ機能するため、複数の挿入が同時に発生すると、予期しない結果が発生する可能性があることに注意してください。

Mem_BasicMem_NaMem_Occ を実際のテーブル名と列名に置き換えてください。 また、SQL インジェクションの脆弱性を防ぐために適切なパラメーター化を確保してください。 // ... セクションは、cmd.Parameters.AddWithValue(...) を使用してパラメーター割り当てコードを追加する場所を示します。

以上がC# MVC 4 を使用して SQL Server に新しく挿入されたレコードの ID を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート