36. [ADO.NET] SqlParameter 사용 예제

 이번에는 SqlParameter 를 사용하는 구체적인 예를 살펴봅시다.

 SqlCommand 개체를 사용하는 예제 코드에서는 매개 변수를 사용하지 않아 정적인 쿼리문을 사용하는 예를 보여드렸습니다.

 이번에는 매개 변수를 이용하는 예를 들어보기로 합시다.

 추가할 책의 정보를 입력 인자로 받아 책을 추가하는 메서드를 만들어 사용하기로 합시다.

static void Main(string[] args)
{
    AddBook("XML.NET", 15000, "홍길동", "9224764583");
    AddBook("CSharp" , 18000, "홍길동", "9228964583");
}
private static void AddBook(string title, int price, string author, string isbn)
{
    //to be defined
}

 책을 추가하는 SQL문을 매개 변수를 이용하여 표현합니다.

string comtext = "insert into Books values (@Title, @Price,@Author,@ISBN)";

 입력 인자로 받은 것을 값으로 하는 SqlParameter 개체를 생성하여 SqlCommand 개체에 추가하는 로직이 필요합니다.

 다음은 매개 변수 이름과 값을 생성자에 전달하여 SqlParameter 개체를 생성한 예입니다.

SqlParameter param_title = new SqlParameter("@Title", title);
command.Parameters.Add(param_title);

  다음은 SqlParameter 개체를 생성한 후에 매개 변수 이름, 타입, 값을 설정하는 예입니다.

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);

다음은 앞에서 작성한 소스 코드입니다.

static void Main(string[] args)
{
    AddBook("XML.NET", 15000, "홍길동", "9224764583");
    AddBook("CSharp" , 18000, "홍길동", "9228964583");
}
private static void AddBook(string title, int price, string author, string isbn)
{
    string comtext = "insert into Books values (@Title, @Price,@Author,@ISBN)";
    string constr = @"Data Source=[서버 이름];Initial Catalog=[DB 명]; User ID=[ID];Password=[PW]";
    SqlConnection scon = new SqlConnection(constr);
    SqlCommand command = new SqlCommand(comtext, scon);
 
    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);
 
    scon.Open();
    if (command.ExecuteNonQuery() == 1)
    {
        Console.WriteLine("{0} 추가 성공", title);
    }
    else
    {
        Console.WriteLine("{0} 추가 실패", title);
    }
    scon.Close();
}