C# 데이터베이스 연결 튜토리얼: SQL Server 연결과 CRUD 작업
데이터베이스 작업은 모든 C# 개발자의 핵심 기술입니다. 이 가이드는 Microsoft SQL Server 연결, 쿼리 실행, Windows Forms 컨트롤에 데이터 바인딩 방법을 보여줍니다.
데이터베이스 연결 기초
Oracle, MySQL, MongoDB, Microsoft SQL Server 중 무엇을 사용하든 연결, 쿼리, 삽입, 업데이트, 삭제 과정은 일관됩니다. 이 튜토리얼에서는 무료 SQL Server Express 에디션을 사용해 SQL Server에 집중합니다.
- 연결 문자열 – 서버 이름, 데이터베이스 이름, 자격 증명 포함
- 자격 증명 – 필요한 권한을 가진 사용자명과 비밀번호
- 선택적 매개변수 – 연결 타임아웃, 암호화 등
C#에서 SQL 명령
SqlCommand 클래스는 SQL 문을 데이터베이스로 전송합니다. SELECT 쿼리에는 ExecuteReader, INSERT/UPDATE/DELETE에는 ExecuteNonQuery를 사용합니다.
C#을 SQL Server에 연결
아래는 Demodb라는 데이터베이스에 자격 증명 sa / demo123으로 연결하는 최소한의 Windows Forms 예제입니다. 버튼 클릭 이벤트에서 연결을 열고 메시지 표시 후 닫습니다.
1단계: Visual Studio에서 Windows Forms 프로젝트 생성. 2단계: 텍스트 "Connect"인 btnConnect 버튼 추가. 3단계: 다음 이벤트 핸들러 추가:
using System;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace DemoApplication1 {
public partial class Form1 : Form {
public Form1() => InitializeComponent();
private void btnConnect_Click(object sender, EventArgs e) {
string connectionString = "Data Source=WIN-50GP30FGO75;Initial Catalog=Demodb;User ID=sa;Password=demo123";
using (SqlConnection conn = new SqlConnection(connectionString)) {
conn.Open();
MessageBox.Show("Connection Opened!");
conn.Close();
}
}
}
}
애플리케이션 실행 후 버튼 클릭 시 확인 메시지 표시.
SqlDataReader로 데이터 읽기
demotb 테이블에 TutorialID, TutorialName 컬럼이 있다고 가정:
| TutorialID | TutorialName |
| 1 | C# |
| 2 | ASP.NET |
다음 코드로 행 조회 및 표시:
string sql = "SELECT TutorialID, TutorialName FROM demotb";
using (SqlCommand cmd = new SqlCommand(sql, conn))
using (SqlDataReader reader = cmd.ExecuteReader()) {
string output = "";
while (reader.Read()) {
output += $"ID: {reader["TutorialID"]}, Name: {reader["TutorialName"]}\n";
}
MessageBox.Show(output);
}
레코드 삽입
새 튜토리얼(ID 3, Name VB.NET) 추가:
string insertSql = "INSERT INTO demotb (TutorialID, TutorialName) VALUES (3, 'VB.NET')";
using (SqlCommand cmd = new SqlCommand(insertSql, conn)) {
cmd.ExecuteNonQuery();
}
레코드 업데이트
ID 3 튜토리얼을 "VB.NET Complete"로 업데이트:
string updateSql = "UPDATE demotb SET TutorialName = 'VB.NET Complete' WHERE TutorialID = 3";
using (SqlCommand cmd = new SqlCommand(updateSql, conn)) {
cmd.ExecuteNonQuery();
}
레코드 삭제
ID 3 레코드 제거:
string deleteSql = "DELETE FROM demotb WHERE TutorialID = 3";
using (SqlCommand cmd = new SqlCommand(deleteSql, conn)) {
cmd.ExecuteNonQuery();
}
컨트롤을 데이터에 바인딩
Windows Forms은 데이터 바인딩을 제공하여 수동 UI 업데이트가 필요 없습니다. 두 TextBox 컨트롤을 폼에 드래그, 이름 txtID, txtName 지정, BindingNavigator 추가.
데이터 소스 마법사로 demotb용 프로젝트 데이터 소스 생성. 그런 다음:
txtID 선택, 속성 창에서 DataBindings → Text 클릭, demotbBindingSource – TutorialID에 바인딩
txtName에 TutorialName 바인딩 반복
BindingNavigator의 BindingSource 속성을 demotbBindingSource로 설정
폼 실행 시 텍스트 상자에 첫 레코드 표시, 네비게이터로 행 자동 이동.
DataGridView로 데이터 표시
DataGridView를 폼에 드래그. 속성에서 DataSource를 demotbBindingSource로 설정. 그리드가 테이블의 모든 행으로 자동 채워집니다.
요약
SqlConnection과 적절한 연결 문자열로 SQL Server 연결
SqlCommand와 ExecuteNonQuery로 CRUD 작업 수행
SqlDataReader로 데이터 읽고 while 루프로 행 처리
- UI 컨트롤을
BindingSource에 바인딩하여 자동 데이터 표시 및 네비게이션
DataGridView로 표 형식 데이터 즉시 표시