C# での SQL INSERT 後の自動生成 ID の取得
この記事では、SQL Server データベースに新しいレコードを挿入した後に自動生成された ID を効率的に取得するという、一般的な C# プログラミングの課題に対処します。 いくつかの方法を検討し、さまざまな SQL Server バージョンとの互換性を強調します。
「Mem_Basic」という名前のテーブルにデータを挿入し、新しく生成された「ID」が必要であると想像してください。
<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 ) { // ... (code to be added) }</code>
1 つのメソッドは ExecuteScalar()
を使用しますが、これはすべての SQL Server バージョンで常に信頼できるわけではありません:
<code class="language-csharp">int modified =(int)cmd.ExecuteScalar(); //Potentially unreliable in older SQL Server versions</code>
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)) { // ... (rest of the code) }</code>
ただし、SQL Server の古いバージョン (2005 年より前) の場合、SCOPE_IDENTITY()
は信頼できる代替手段を提供します。
<code class="language-csharp">using(SqlCommand cmd=new SqlCommand("INSERT INTO Mem_Basic(Mem_Na,Mem_Occ) VALUES(@na,@occ);SELECT SCOPE_IDENTITY();",con)) { // ... (rest of the code) }</code>
これらのメソッドにより、開発者は SQL INSERT
操作後に自動生成された ID を一貫して取得できるようになり、C# アプリケーションでのデータ管理が向上します。
以上がC# で SQL INSERT 後に自動生成された ID を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。