게시판
      
상위분류 : 잡필방 중위분류 : 서류가방 하위분류 : 전산과 컴퓨터
작성자 : 문시형 작성일 : 2016-08-27 조회수 : 3,971
제 목 : Insert 이후 Identity 값을 리턴 받고 싶을경우 C# ExecuteScalar() 사용법
C샾.net

[C# / MSSQL] Insert 이후 Identity 값을 리턴 받고 싶을경우 C# ExecuteScalar() 사용법

0
아슈 이웃추가 | 2014.05.27. 10:36
앱으로 보기
본문 기타 기능

?작업을 하다보면 Insert를 하고 적용된 고유의 값을 받아 하위 테이블 FK(Foreign Key)로 사용 할 때가 있다

위와 같은 작업시 Insert후 Select를 날리는 것보다 아래와 같이 Identity 값을 받아서 사용 하는 것이 더 좋은 거 같다고 생각된다

?

핵샘 코드 :  1.  insert into table이름(컬럼) Values (); SELECT CAST(scope_identity() AS int)";

                 2.  ?newProdID = (Int32)cmd.ExecuteScalar();

?

전체 예제(출처 mdns?)

static public int AddProductCategory(string newName, string connString)
{
    Int32 newProdID = 0;
    string sql =
        "INSERT INTO Production.ProductCategory (Name) VALUES (@Name); "
        + "SELECT CAST(scope_identity() AS int)";
    using (SqlConnection conn = new SqlConnection(connString))
    {
        SqlCommand cmd = new SqlCommand(sql, conn);
        cmd.Parameters.Add("@Name", SqlDbType.VarChar);
        cmd.Parameters["@name"].Value = newName;
        try
        {
            conn.Open();
            newProdID = (Int32)cmd.ExecuteScalar();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
    return (int)newProdID;
}

| | 목록으로