프로그래밍 기술/SQL과 ADO.NET

[ADO.NET] SqlParameter 사용 예 - 저장 프로시저를 이용하여 도서 추가

언제나휴일 2016. 4. 22. 13:27
반응형

저장 프로시저 만드는 방법 바로가기


 이번에는 저장 프로시저를 이용하는 예를 들어보기로 할게요.


 먼저 도서를 추가하는 저장 프로시저를 만듭니다.

 

CREATE PROCEDURE dbo.AddBook

(

    @ISBN  varchar(50),

    @Title varchar(50),

    @Author varchar(50),

    @Price int,

    @Result int OUTPUT

)

AS

    begin

        set @Result = 0

        select @Result = count(*) from Books where (ISBN=@ISBN)

                           if @Result = 0

        begin

            insert Books values(@Title,@Price,@Author,@ISBN)

            set @Result = 1

        end

    end

RETURN

[소스] AddBook 저장 프로시저

 

 저장 프로시저를 실행하려면 SqlCommand CommandType 속성을 StoredProcedure로 설정해야 합니다.

command.CommandType = System.Data.CommandType.StoredProcedure;

 

 AddBook 저장 프로시저를 보면 @Result 인자는 인자 유형이 OUTPUT으로 되어 있기 때문에 파라미터의 방향을 Output으로 설정해야 합니다.

 

SqlParameter param_result = new SqlParameter();

param_result.Direction = System.Data.ParameterDirection.Output;

param_result.ParameterName = "@Result";

param_result.SqlDbType = System.Data.SqlDbType.Int;

command.Parameters.Add(param_result);

 

Program.cs


static void Main(string[] args)

{

    AddBook(".NET  플랫폼", 15000, "홍길동", "9224764583");

    AddBook("CSharp", 18000, "홍길동", "9228964583");

}

 

private static void AddBook(string title, int price, string author, string isbn)

{

    string comtext = "AddBook";

    string constr = @"Data Source=[서버 이름];Initial Catalog=[DB ]; User ID=[ID];Password=[PW]";

 

    SqlConnection scon = new SqlConnection(constr);

    SqlCommand command = new SqlCommand(comtext, scon);

    command.CommandType = System.Data.CommandType.StoredProcedure;

 

    SqlParameter param_title = new SqlParameter("@Title", title);

    command.Parameters.Add(param_title);

 

    SqlParameter param_price = new SqlParameter();

    param_price.ParameterName = "@Price";

    param_price.SqlDbType = System.Data.SqlDbType.Int;

    param_price.Value = price;

    command.Parameters.Add(param_price);

 

    SqlParameter param_author = new SqlParameter("@Author", author);

    command.Parameters.Add(param_author);

 

    SqlParameter param_isbn = new SqlParameter("@ISBN", isbn);

    command.Parameters.Add(param_isbn);

 

    SqlParameter param_result = new SqlParameter();

    param_result.Direction = System.Data.ParameterDirection.Output;

    param_result.ParameterName = "@Result";

    param_result.SqlDbType = System.Data.SqlDbType.Int;

    command.Parameters.Add(param_result);

 

 

    scon.Open();

    command.ExecuteNonQuery();

    int result = (int)param_result.Value;

    if (result == 1)

    {

        Console.WriteLine("{0} 도서추가 성공", title);

    }

    else

    {

        Console.WriteLine("{0} 도서추가 실패", title);

    }           

    scon.Close();

}

[소스] 저장 프로시저를 이용한 도서 추가 예제 코드

 

반응형