C# MVC 4에서 SQL INSERT 후 삽입된 ID 검색
이 문서에서는 MVC 4 애플리케이션에서 C#을 사용하여 데이터를 삽입하고 새로 삽입된 레코드의 ID를 검색하는 방법을 보여줍니다. ExecuteNonQuery
은 영향을 받은 행 수를 나타내지만, 삽입된 ID를 얻으려면 다른 접근 방식이 필요합니다.
가장 간단한 방법은 ExecuteScalar
을 활용하는 것입니다. 그러나 결과는 명시적으로 정수로 변환되어야 합니다.
<code class="language-csharp">int modified = (int)cmd.ExecuteScalar();</code>
성공적으로 실행된 후 modified
는 새로 생성된 ID를 보유하게 됩니다.
SQL Server 2005 이상의 경우 OUTPUT
문 내에서 INSERT
키워드를 활용하면 보다 효율적인 솔루션이 제공됩니다.
<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 modified = (int)cmd.ExecuteScalar(); if (con.State == System.Data.ConnectionState.Open) con.Close(); return modified; }</code>
이전 SQL Server 버전의 경우 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)) { cmd.Parameters.AddWithValue("@na", Mem_NA); cmd.Parameters.AddWithValue("@occ", Mem_Occ); con.Open(); int modified = Convert.ToInt32(cmd.ExecuteScalar()); if (con.State == System.Data.ConnectionState.Open) con.Close(); return modified; }</code>
이러한 방법을 사용하면 SQL Server 버전에 관계없이 삽입된 레코드의 ID를 정확하게 검색할 수 있습니다. 프로덕션 환경에서는 잠재적인 예외를 적절하게 처리하는 것을 잊지 마세요.
위 내용은 C# MVC 4에서 SQL INSERT 명령 후에 삽입된 ID를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!