C#/ADO.NET

ADO.NET 데이타 추가

황기하 2021. 12. 27.
SQL 데이타 추가 (INSERT)

SQL 서버의 테이블에 데이타를 추가하기 위해서는 INSERT 문을 실행한다.
ADO.NET에서 이러한 명령문을 실행하는 클래스는 SqlCommand 클래스인데,
이를 이용하여 INSERT, UPDATE, DELETE, SELECT 혹은 저장된 프로스져 (Stored Procedure) 등을 실행할 수 있다.
SqlCommand 클래스 객체를 생성한 후,
SQL문을 CommandText 속성에 지정하고 ExecuteNonQuery() 메소드를 실행하면,
INSERT, UPDATE, DELETE 등의 소위 DML 문장들이나
CREATE 문과 같은 DDL 문장들을 모두 실행할 수 있다.
아래는 단순한 INSERT 문을 실행하는 예이다.

 

using(SqlConnection conn = new SqlConnection(strConn))
{
   conn.Open();
   SqlCommand cmd = new SqlCommand();
   cmd.Connection = conn;
   cmd.CommandText = "INSERT Table1 VALUES(1, N'광화문')";
   cmd.ExecuteNonQuery();
}

 

파라미터를 사용한 INSERT

위와 같이 단순하게 리터럴(상수 문자열)을 사용하는 INSERT 문과 달리,
파라미터를 사용하여 INSERT문을 쓰는 경우가 있는데,
이 경우 각 파라미터당 파라미터 타입 및 값을 지정하여 사용하게 된다.
이러한 방식은 각 파리미터의 타입 및 최대값을 체크하여 보다 안전한 SQL문을 구성하게 해준다.
실제로 이렇게 파라미터를 사용하는 방식은
SQL Injection과 같은 보안 관련 이슈들을 방지하는데 크게 도움이 되기 때문에,
실무에서 특히 권장되는 사항이다.
(이는 INSERT뿐만 아니라 SELECT, UPDATE, DELETE 등 기타 모든 SQL문에 공통된 사항이다)
아래는 INSERT문에 4개의 파라미터들을 받아들여 실행하는 예로서
각 파라미터 당 SqlParameter객체를 하나씩 생성하여 SqlCommand의 Parameters 컬렉션에 추가하였다.

 

using System;
using System.Data;
using System.Data.SqlClient;

namespace sqltest
{
  class Program
  {
    static void Main(string[] args)
    {
        Program p = new Program();
        p.Insert(1, "Kim", 95, DateTime.Now);
    }

    public void Insert(int id, string name, int score, DateTime lastUpdate)
    {
      // ConnectionString을 지정
      string strConn = "Data Source=(local);Initial Catalog=TestDB;Integrated Security=SSPI;";

      using (SqlConnection conn = new SqlConnection(strConn))
      {
        conn.Open();
            
        // 파라미터를 사용한 데이타 INSERT
        string sql = "INSERT MathScore VALUES (@id, @name, @score, @date)";
        SqlCommand cmd = new SqlCommand(sql, conn);

        // @id 에 대한 파라미터
        SqlParameter pID = new SqlParameter("@id", SqlDbType.Int);
        pID.Value = id;
        cmd.Parameters.Add(pID);

        // @name 에 대한 파라미터
        // @name은 Nvarchar(20) 타입임
        SqlParameter pName = new SqlParameter("@name", SqlDbType.NVarChar, 20);
        pName.Value = name;
        cmd.Parameters.Add(pName);

        // @score 에 대한 파라미터
        SqlParameter pScore = new SqlParameter("@score", SqlDbType.Int);
        pScore.Value = score;
        cmd.Parameters.Add(pScore);

        // @date 에 대한 파라미터
        SqlParameter pDate = new SqlParameter("@date", SqlDbType.DateTime);
        pDate.Value = lastUpdate;
        cmd.Parameters.Add(pDate);

        // INSERT문 실제 실행
        int rowsInserted = cmd.ExecuteNonQuery();

        // INSERT된 ROW수 체크. 
        // 만약 INSERT가 실패하였으면 0가 리턴
        if (rowsInserted == 1)
            Console.WriteLine("1 row inserted");
      }
    }
 }
}

 

 

[출처] http://www.sqlprogram.com/AdoNet/adonet-insert.aspx

 

SQL 데이타 추가 - SQL 프로그래밍 배우기 (Learn SQL Programming)

SQL 데이타 추가 (INSERT) SQL 서버의 테이블에 데이타를 추가하기 위해서는 INSERT 문을 실행한다. ADO.NET에서 이러한 명령문을 실행하는 클래스는 SqlCommand 클래스인데, 이를 이용하여 INSERT, UPDATE, DELET

www.sqlprogram.com

 

'C# > ADO.NET' 카테고리의 다른 글

SQL 데이타 삭제  (0) 2021.12.27
SQL 데이타 갱신  (0) 2021.12.27
ADO.NET 읽기  (0) 2021.12.27
ADO.NET 사용  (0) 2021.12.27
ADO.NET 소개  (0) 2021.12.27

댓글