Study/C#

C# Windows Forms 강의 12편: DataGridView와 ADO.NET

wawManager 2025. 2. 15. 12:00
728x90

1. 강의 개요

이번 강의에서는 Windows Forms에서 데이터를 표시하고 데이터베이스와 상호작용하는 데 유용한 DataGridViewADO.NET을 학습합니다.

  • DataGridView: 데이터를 테이블 형태로 표시하며, 편집, 삭제, 추가 등 다양한 기능을 제공합니다.
  • ADO.NET: 데이터베이스와 상호작용하기 위한 .NET Framework의 데이터 액세스 기술입니다.

2. 학습 목표

  1. DataGridView를 사용해 데이터를 테이블 형태로 표시.
  2. ADO.NET을 사용해 데이터베이스에서 데이터를 읽고 표시.
  3. DataGridView와 ADO.NET을 결합하여 CRUD(Create, Read, Update, Delete) 작업 구현.

3. DataGridView (데이터 그리드 뷰)

DataGridView란?

DataGridView는 데이터를 테이블 형태로 표시하고 편집할 수 있는 컨트롤입니다.

  • 데이터 소스에 연결하거나 수동으로 데이터를 추가 가능.
  • 사용자 입력 및 수정 기능 제공.

주요 속성

속성 설명 예제

DataSource DataGridView의 데이터 소스 설정 dataGridView1.DataSource = dataTable;
Columns 열 컬렉션 관리 dataGridView1.Columns.Add("ID", "아이디");

주요 이벤트

이벤트 설명 예제

CellClick 셀 클릭 시 발생하는 이벤트 dataGridView1.CellClick += DataGridView1_CellClick;

4. ADO.NET

ADO.NET이란?

ADO.NET은 데이터베이스와 상호작용하기 위한 클래스와 메서드를 제공하는 .NET 기술입니다.

  • 데이터를 연결(Connection)하거나, 명령(Command)을 실행하여 데이터베이스 작업 수행.

주요 클래스

클래스 설명 예제

SqlConnection 데이터베이스 연결을 관리 new SqlConnection(connectionString);
SqlCommand 데이터베이스 명령 실행 new SqlCommand(query, connection);
SqlDataAdapter 데이터베이스 데이터를 DataTable로 가져오기 new SqlDataAdapter(command);

5. 실습: DataGridView와 ADO.NET 사용하기

요구사항

  1. DataGridView를 사용해 데이터베이스의 데이터를 테이블 형태로 표시.
  2. "새 데이터 추가" 버튼 클릭 시 데이터를 추가.
  3. "선택된 데이터 삭제" 버튼 클릭 시 선택한 행 삭제.

폼 구성

컨트롤 타입 이름 텍스트 위치 크기

DataGridView dataGridView1 (없음) 상단 (400 x 300)
Button btnAdd "새 데이터 추가" 하단 왼쪽 (150 x 30)
Button btnDelete "선택된 데이터 삭제" 하단 오른쪽 (150 x 30)

코드 작성

Form1.cs

using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        private string connectionString = "Server=YOUR_SERVER;Database=YOUR_DATABASE;Trusted_Connection=True;";
        private DataTable dataTable = new DataTable();

        public Form1()
        {
            InitializeComponent();
            InitializeDataGridView();
            LoadData();
        }

        private void InitializeDataGridView()
        {
            dataGridView1.DataSource = dataTable;
            dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            dataGridView1.MultiSelect = false;
        }

        private void LoadData()
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                try
                {
                    connection.Open();
                    string query = "SELECT * FROM YourTable";
                    SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
                    dataTable.Clear();
                    adapter.Fill(dataTable);
                }
                catch (Exception ex)
                {
                    MessageBox.Show($"데이터를 불러오는 중 오류가 발생했습니다: {ex.Message}");
                }
            }
        }

        private void BtnAdd_Click(object sender, EventArgs e)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                try
                {
                    connection.Open();
                    string query = "INSERT INTO YourTable (Column1, Column2) VALUES (@Value1, @Value2)";
                    using (SqlCommand command = new SqlCommand(query, connection))
                    {
                        command.Parameters.AddWithValue("@Value1", "새 데이터");
                        command.Parameters.AddWithValue("@Value2", "값 2");
                        command.ExecuteNonQuery();
                    }
                    MessageBox.Show("데이터가 추가되었습니다.");
                    LoadData();
                }
                catch (Exception ex)
                {
                    MessageBox.Show($"데이터 추가 중 오류가 발생했습니다: {ex.Message}");
                }
            }
        }

        private void BtnDelete_Click(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedRows.Count > 0)
            {
                int selectedId = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[0].Value);
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    try
                    {
                        connection.Open();
                        string query = "DELETE FROM YourTable WHERE ID = @ID";
                        using (SqlCommand command = new SqlCommand(query, connection))
                        {
                            command.Parameters.AddWithValue("@ID", selectedId);
                            command.ExecuteNonQuery();
                        }
                        MessageBox.Show("데이터가 삭제되었습니다.");
                        LoadData();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show($"데이터 삭제 중 오류가 발생했습니다: {ex.Message}");
                    }
                }
            }
            else
            {
                MessageBox.Show("삭제할 데이터를 선택하세요.");
            }
        }
    }
}

6. 실행 결과

  1. DataGridView
    • 데이터베이스의 데이터가 테이블 형태로 표시됩니다.
  2. 새 데이터 추가
    • "새 데이터 추가" 버튼을 클릭하면 새 데이터가 추가되고 DataGridView에 갱신됩니다.
  3. 선택된 데이터 삭제
    • 행을 선택한 후 "선택된 데이터 삭제" 버튼을 클릭하면 해당 데이터가 삭제됩니다.

7. 주요 개념 요약

  1. DataGridView는 데이터를 테이블 형식으로 표시하고, DataSource를 사용해 데이터를 바인딩.
  2. ADO.NET을 통해 데이터베이스와 상호작용하며 데이터를 읽고 수정, 삭제 가능.
  3. DataGridView와 ADO.NET을 결합하여 데이터 표시 및 CRUD 작업을 수행.

 

728x90