본문 바로가기
개발 이야기/C# 이야기

C# 데이터베이스 프로시저 실행하기

by 런던살자 2020. 6. 24.

안녕하세요 마블랑입니다.

 

이번 포스팅은 C# 에서 데이터베이스에 이미 등록해놓은 프로시저(Procedure)를 실행하는 방법입니다.

 

 

C#에서 데이터베이스를 연동하는 방법은 이전에 포스팅으로 따로 정리를 해두었습니다.

 

데이터베이스 연동이나 쿼리 실행에 대해서 아직 모르는 분이 있을지 몰라 이전 데이터베이스 연동 포스팅의 링크를 걸어두었습니다~

 

2020/06/24 - [개발 이야기/C# 이야기] - C# Mssql 연동하기

 

C# Mssql 연동하기

안녕하세요 마블랑입니다. 이번 포스팅은 C# 프로그램에서 데이터 베이스 Mssql을 연동하는 방법입니다. 이전에는 ODBC를 이용해 데이터베이스와 연동하는 방법에 대해 포스팅을 했었는데 이번에�

sosobaba.tistory.com

 

그리고 C#에서는 가비지 컬렉터(GC)가 알아서 메모리 관리를 해주지만 어느정도는 사용자가 구현을 해야하는게 좋을것같아 역시 지난번엔 포스팅한 using 구문을 이용해서 샘플코드를 작성해 보았습니다.

 

using 구문 포스팅도 잘 활용해 주세요~

 

2020/06/19 - [개발 이야기/C# 이야기] - C# using으로 메모리 관리

 

C# using으로 메모리 관리

안녕하세요 마블랑입니다. C#은 기존의 C나 C++로 길게 구현하던 코드를 간단하게 몇줄로 아주 쉽게 구현할수 있습니다. 물론 그 문법에 대해서 잘 이해하고 써야되는데요 대표적으로 람다식이 ��

sosobaba.tistory.com

 

그림 이제 본론으로 C# 에서 데이터베이스에 이미 등록된 프로시저를 실행하는 방법에 대해서 알아보겠습니다.

 

바로 코드를 참고해주시면 됩니다.

using (SqlConnection con = new SqlConnection("Server=127.0.0.1; Database=TestMarblang; uid=Marblang; pwd=Marblang000"))
{
  con.Open();
  using (SqlCommand cmd = new SqlCommand("PROCEDURE_TEST", con))
  {
    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.AddWithValue("@FIRST_ARGU", "FIRST VALUE");
    cmd.Parameters.AddWithValue("@SECOND_ARGU", "SECOND VALUE");
    cmd.Parameters.AddWithValue("@THIRD_ARGU", "THIRD VALUE");

    int result = cmd.ExecuteNonQuery();
    Console.WriteLine("반영된 열의 개수 " + result);
  }
  con.Close();
  con.Dispose();
}

위 코드를 보면 대체로 Insert 문이나 Update 문을 실행하는 것과 비슷합니다.

 

한가지 차이점이라고 한다면 SqlCommand.CommandType 을 프로시저라고 명시를 해줘야 합니다.

 

아마도 지금 매개변수로 넣은 쿼리문이 프로시저이다 라는것을 알려주기 위함 같습니다.

 

 

프로시저에 매개변수를 넣어주려면 

 

cmd.Parameters.AddWithValue("@FIRST_ARGU", "FIRST VALUE");
cmd.Parameters.AddWithValue("@SECOND_ARGU", "SECOND VALUE");
cmd.Parameters.AddWithValue("@THIRD_ARGU", "THIRD VALUE");

 

이렇게 넣어주면 됩니다.

 

물론 첫번째 매개변수는 프로시저 안에서 명시된 매개변수 명입니다. 오타 없이 맞게 매개변수를 넣어주세요

 

 

이제 프로시저를 실행하는 일만 남았는데요 

 

Insert문이나 Update문과 같이 ExecuteNonQuery()를 실행하면 됩니다.


int result = cmd.ExecuteNonQuery();

 

리턴값으로 나오는 정수형은 변경이 있는 행의 갯수이니 맞게 변경이 되었는지 확인용으로 쓰면 될것같습니다.

 

 

이상 마블랑이었습니다.

 

읽어주어서 고맙습니다.

 

댓글