데이터베이스 연동 소개 (Introduction to Database Integration)
C#에서 데이터베이스 연동은 애플리케이션이 데이터베이스와 상호작용할 수 있도록 하는 중요한 과정입니다. 이 작업은 데이터의 저장, 조회, 수정, 삭제와 같은 기능을 포함합니다. C#에서는 두 가지 주요 방법으로 데이터베이스와 연동할 수 있습니다: ADO.NET
과 Entity Framework
. ADO.NET
은 데이터베이스와의 직접적인 연결과 쿼리 실행을 지원하며, Entity Framework
는 객체-관계 매핑(ORM)을 통해 데이터베이스와 객체 간의 매핑을 자동으로 처리합니다. 이 문서에서는 두 방법의 개요와 기본적인 CRUD 연산을 설명합니다.
ADO.NET 소개 (Introduction to ADO.NET)
ADO.NET
은 데이터베이스와의 상호작용을 위한 .NET 프레임워크의 구성 요소로, 데이터베이스 연결, 쿼리 실행, 데이터 조작 등을 수행합니다. 주요 클래스에는 SqlConnection
, SqlCommand
, SqlDataReader
, SqlDataAdapter
, DataSet
이 포함됩니다.
ADO.NET의 주요 구성 요소 (Key Components of ADO.NET)
- SqlConnection: 데이터베이스와의 연결을 관리합니다.
- SqlCommand: SQL 쿼리 또는 저장 프로시저를 실행합니다.
- SqlDataReader: 쿼리 결과를 읽어옵니다.
- SqlDataAdapter: 데이터베이스와 애플리케이션 간의 데이터 교환을 처리합니다.
- DataSet: 데이터의 비연결적 캐시를 제공합니다.
ADO.NET 사용 예제 (Using ADO.NET)
데이터베이스 연결 (Connecting to a Database)
using System; using System.Data.SqlClient; namespace ADOExample { class Program { static void Main(string[] args) { string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"; using (SqlConnection connection = new SqlConnection(connectionString)) { try { connection.Open(); Console.WriteLine("Database connection successful."); } catch (Exception ex) { Console.WriteLine($"Connection error: {ex.Message}"); } } } } }
이 예제에서는 SQL Server에 연결하기 위한 SqlConnection
을 생성하고 연결을 시도합니다.
SQL 쿼리 실행 (Executing SQL Queries)
using System; using System.Data.SqlClient; namespace ADOExample { class Program { static void Main(string[] args) { string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"; string query = "SELECT * FROM Employees"; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand(query, connection); try { connection.Open(); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { Console.WriteLine($"ID: {reader["Id"]}, Name: {reader["Name"]}"); } } catch (Exception ex) { Console.WriteLine($"Query error: {ex.Message}"); } } } } }
이 예제에서는 SqlCommand
를 사용하여 SQL 쿼리를 실행하고 SqlDataReader
를 통해 결과를 읽어옵니다.
데이터 삽입 (Inserting Data)
using System; using System.Data.SqlClient; namespace ADOExample { class Program { static void Main(string[] args) { string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"; string query = "INSERT INTO Employees (Name, Position) VALUES (@Name, @Position)"; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand(query, connection); command.Parameters.AddWithValue("@Name", "John Doe"); command.Parameters.AddWithValue("@Position", "Developer"); try { connection.Open(); int rowsAffected = command.ExecuteNonQuery(); Console.WriteLine($"{rowsAffected} row(s) inserted."); } catch (Exception ex) { Console.WriteLine($"Insert error: {ex.Message}"); } } } } }
이 예제는 매개변수를 사용하여 SQL INSERT 문을 실행합니다.
Entity Framework 소개 (Introduction to Entity Framework)
Entity Framework
(EF)는 객체-관계 매핑(ORM) 프레임워크로, 데이터베이스의 테이블과 C# 객체 간의 매핑을 자동으로 처리합니다. EF는 데이터베이스와의 상호작용을 더 쉽게 관리할 수 있는 고수준의 추상화를 제공합니다. EF Core는 최신 EF의 경량화된 버전으로, 다양한 데이터베이스 제공자를 지원합니다.
EF Core 설치 (Installing EF Core)
NuGet 패키지 매니저를 통해 EF Core와 SQL Server 제공자를 설치합니다.
Install-Package Microsoft.EntityFrameworkCore Install-Package Microsoft.EntityFrameworkCore.SqlServer
기본 CRUD 연산 (Basic CRUD Operations)
CRUD 연산은 데이터베이스에서 데이터를 생성(Create), 읽기(Read), 업데이트(Update), 삭제(Delete)하는 기본 작업입니다. EF Core를 사용하여 이 작업들을 수행하는 방법을 설명합니다.
모델 및 DbContext 정의 (Defining Model and DbContext)
using Microsoft.EntityFrameworkCore; namespace EFCoreCRUDExample { public class Employee { public int Id { get; set; } public string Name { get; set; } public string Position { get; set; } } public class AppDbContext : DbContext { public DbSet<Employee> Employees { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"); } } }
Employee
클래스는 데이터베이스의 테이블과 매핑되는 모델을 정의하며, AppDbContext
는 EF Core가 데이터베이스와 상호작용하는 컨텍스트 클래스입니다.
데이터 생성 (Create)
using System; namespace EFCoreCRUDExample { class Program { static void Main(string[] args) { using (var context = new AppDbContext()) { var newEmployee = new Employee { Name = "Alice Johnson", Position = "Software Engineer" }; context.Employees.Add(newEmployee); context.SaveChanges(); Console.WriteLine("New employee added successfully."); } } } }
이 예제는 새 Employee
객체를 추가하고 데이터베이스에 저장합니다.
데이터 읽기 (Read)
using System; using System.Linq; namespace EFCoreCRUDExample { class Program { static void Main(string[] args) { using (var context = new AppDbContext()) { var employees = context.Employees.ToList(); foreach (var employee in employees) { Console.WriteLine($"ID: {employee.Id}, Name: {employee.Name}, Position: {employee.Position}"); } } } } }
이 예제는 Employees
테이블에서 모든 데이터를 조회하고 출력합니다.
데이터 업데이트 (Update)
using System; using System.Linq; namespace EFCoreCRUDExample { class Program { static void Main(string[] args) { using (var context = new AppDbContext()) { var employee = context.Employees.FirstOrDefault(e => e.Name == "Alice Johnson"); if (employee != null) { employee.Position = "Senior Software Engineer"; context.SaveChanges(); Console.WriteLine("Employee position updated successfully."); } else { Console.WriteLine("Employee not found."); } } } } }
이 예제는 특정 직원의 직위를 업데이트하고 변경 사항을 데이터베이스에 저장합니다.
데이터 삭제 (Delete)
using System; using System.Linq; namespace EFCoreCRUDExample { class Program { static void Main(string[] args) { using (var context = new AppDbContext()) { var employee = context.Employees.FirstOrDefault(e => e.Name == "Alice Johnson"); if (employee != null) { context.Employees.Remove(employee); context.SaveChanges(); Console.WriteLine("Employee deleted successfully."); } else { Console.WriteLine("Employee not found."); } } } } }
이 예제는 특정 직원을 삭제하고 데이터베이스에 변경 사항을 저장합니다.
결론 (Conclusion)
C#에서 데이터베이스 연동은 애플리케이션의 데이터 저장, 조회, 수정, 삭제 작업을 관리하는 중요한 과정입니다. ADO.NET
과 Entity Framework
는 각각 다른 접근 방식을 통해 데이터베이스와 상호작용할 수 있도록 합니다. ADO.NET
은 저수준의 데이터베이스 작업을 제공하며, Entity Framework
는 ORM 기능을 통해 더 높은 수준의 추상화된 데이터 조작을 지원합니다