SqlCommand

SqlCommand 소개

SqlCommand는 실행할 SQL 구문을 캡슐화합니다. 이미 설정된 데이터베이스 연결을 통해 데이터베이스에 명령을 보내고 실행 결과를 가져옵니다.
생성자는 두 매개변수를 받습니다: SQL 텍스트(cmdText)데이터베이스 연결 객체(SqlConnection).

간단한 예제

SQL Server를 미리 설치하고 Article 테이블을 생성한 뒤 테스트 레코드 한 건을 삽입해 주세요.

private void button1_Click(object sender, EventArgs e)
{
    // 1. 연결 문자열 정의
    string connectionString = "User ID=sa;pwd=qweqwe;initial catalog=DB;Data Source=.;";

    // 2. 연결 객체 생성
    SqlConnection conn = new SqlConnection(connectionString);

    // 3. 실행할 SQL 구문 정의
    string cmdText = "SELECT GETDATE(),count(1) FROM [DB].[dbo].[Article]";

    // 4. 명령 객체를 만들고 SQL과 DB 연결을 바인딩
    SqlCommand command = new SqlCommand(cmdText, conn);

    conn.Open();    // 데이터베이스 연결 열기
    // ExecuteScalar():SQL 실행 후 결과 집합【첫 번째 행, 첫 번째 열】의 데이터를 object 타입으로 반환

    object res = command.ExecuteScalar();

    MessageBox.Show(res.ToString());

    conn.Close();   // 연결 닫기
}Code language: C# (cs)

SQL Server 테이블

CREATE TABLE Article(
    id INT PRIMARY KEY IDENTITY(1,1),
    Title NCHAR(10) NULL,
    AddTime NCHAR(10) NULL
);Code language: SQL (Structured Query Language) (sql)

핵심 메서드: ExecuteScalar()

  • 집계 쿼리 실행: COUNT(), MAX(), MIN(), SUM()
  • 단일 값 조회, 예: 데이터베이스 현재 시간, 자동 증가 기본키 ID

주의사항:

  1. 반환 타입은 object이므로 직접 형변환을 해야 합니다;
  2. SQL 쿼리 결과가 여러 행, 여러 열일 경우 첫 번째 행 첫 번째 열 데이터만 가져오고 나머지는 무시합니다;
  3. 메서드 호출 전 반드시 conn.Open()으로 연결을 열어야 합니다.

권장 작성 방식

using 구문을 사용해 연결 리소스를 자동으로 해제하고 연결 닫는 것을 잊어 발생하는 연결 누수를 피하세요:

string connectionString = "User ID=sa;pwd=qweqwe;initial catalog=DB;Data Source=.;";
string cmdText = "SELECT GETDATE(),count(1) FROM [DB].[dbo].[Article]";
using (SqlConnection conn = new SqlConnection(connectionString))
{
    SqlCommand command = new SqlCommand(cmdText, conn);
    conn.Open();
    object res = command.ExecuteScalar();
    MessageBox.Show(res.ToString());
}
// using 블록을 벗어나면 연결이 자동 해제되므로 conn.Close()를 수동으로 호출할 필요 없음Code language: JavaScript (javascript)

추가 설명

SqlCommand에는 자주 쓰이는 실행 메서드가 3가지 더 있습니다:

  1. ExecuteNonQuery(): INSERT/UPDATE/DELETE 실행, 영향받은 행 수 반환
  2. ExecuteReader(): DataReader 스트림을 반환하며 여러 조회 결과를 행 단위로 읽음
  3. ExecuteXmlReader(): XML 형식 데이터 읽기 (실무에서 자주 쓰이지 않음)

이 메서드들의 사용법은 이후 강의에서 다룹니다.

SqlCommand

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다