IRONSOFTWAREHOME
개발자 업데이트

C# MySQL 연결 (개발자를 위한 작동 원리)

제이콥 멜러, 팀 아이언 최고기술책임자
Jacob Mellor
Updated: 2026년 4월 21일

C# MySQL 통합 소개

C# 응용 프로그램을 MySQL 데이터베이스에 연결하면 개발자가 데이터를 효율적으로 저장, 검색 및 관리하기 위해 관계형 데이터베이스의 힘을 활용할 수 있습니다. 이 가이드는 C# 응용 프로그램과 MySQL을 통합하는 단계 별 프로세스를 제공하며, IronPDF 라이브러리를 사용하여 MySQL 데이터베이스 내의 데이터로부터 PDF를 생성하는 방법을 보여줍니다.

필수 조건

이 가이드를 따라가려면 다음이 필요합니다:

  • Visual Studio 또는 아무 C# IDE
  • MySQL 데이터베이스 (설치 및 실행 중인)
  • IronPDF 라이브러리 (PDF 생성용)

MySQL 데이터베이스 설정

MySQL 설치 및 설정

  1. mysql.com에서 MySQL 최신 버전을 다운로드하세요.
  2. 설치 관리자를 실행하고 설정 지침을 따르세요. "개발자 기본값"을 선택하여 MySQL 서버와 MySQL Workbench를 포함하세요.
  3. 설정 중 MySQL 루트 사용자 자격 증명을 설정하고 MySQL 서비스가 실행 중임을 확인하세요.

샘플 데이터베이스 및 테이블 생성

  1. MySQL Workbench를 열고 서버에 연결하세요.
  2. SQL 명령을 사용하여 새 데이터베이스와 샘플 테이블을 만드세요.
CREATE DATABASE SampleDB;
USE SampleDB;
CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY AUTO_INCREMENT,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    Position VARCHAR(50),
    Salary DECIMAL(10, 2)
);
Text
  1. 샘플 데이터를 삽입하세요.
INSERT INTO Employees (FirstName, LastName, Position, Salary) 
VALUES ('John', 'Doe', 'Software Developer', 80000),
       ('Jane', 'Smith', 'Data Analyst', 75000);
Text

원격 액세스를 위한 MySQL 사용자 설정 (선택 사항)

원격 액세스를 위해 필요한 권한이 있는 MySQL 사용자를 생성하세요.

CREATE USER 'remoteUser'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON SampleDB.* TO 'remoteUser'@'%';
FLUSH PRIVILEGES;
Text

C#를 사용하여 MySQL 데이터베이스 연결

C#에서 MySql.Data 라이브러리 설치하기

C# 응용 프로그램을 MySQL에 연결하기 위해 MySQL Connector/NET 라이브러리를 사용합니다 (종종 Connector/NET이라고 불립니다). 이것은 NuGet을 통해 설치할 수 있는 MySQL에 대한 공식 .NET 드라이버입니다.

  1. Visual Studio를 열고 새 C# 콘솔 애플리케이션을 만듭니다.
  2. NuGet 패키지 관리자를 통해 MySql.Data 라이브러리를 추가하세요:
    • 프로젝트를 마우스 우클릭 > NuGet 패키지 관리 > 브라우저에서 검색 > MySql.Data를 검색하고 설치합니다.

연결 코드 작성하기

다음 코드 예제는 MySQL에 연결하는 방법을 보여줍니다:

using System;
using MySql.Data.MySqlClient;

public class Program
{
    // Connection string containing the server, database, user credentials, etc.
    private string connectionString = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;";
    
    private void Initialize()
    {
        // Create a MySQL connection object
        MySqlConnection connection = new MySqlConnection(connectionString);
        try
        {
            connection.Open();
            Console.WriteLine("Connected to MySQL Database!");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
        finally
        {
            connection.Close(); // Ensure the connection is closed after use
        }
    }
}

설명:

  • 연결 문자열: 서버명, 데이터베이스명, 사용자 ID, 비밀번호 등의 세부사항을 포함합니다.
  • MySqlConnection: 연결을 설정하는 데 사용됩니다.
  • Open() 메서드: 연결을 여는 시도를 합니다.
  • 예외 처리: 예외를 캐치하여 연결 오류를 우아하게 처리합니다.

연결을 위한 DNS SRV 레코드 사용 (선택 사항)

응용 프로그램이 클라우드에 호스팅되거나 DNS SRV 레코드를 통해 MySQL 데이터베이스에 연결해야 하는 경우, 서버명을 해당 데이터베이스의 IP로 해석되는 DNS 항목으로 대체할 수 있습니다.

string connectionString = "Server=mysql.example.com;Database=SampleDB;User ID=root;Password=yourpassword;";

연결 풀링

기본적으로, MySQL Connector/NET은 연결 풀링을 지원하며, 이는 데이터베이스 연결을 더 효율적으로 관리하는 데 도움이 됩니다. 연결 풀링은 풀에서 기존 연결을 재사용하여 반복적으로 연결을 열고 닫는 작업의 오버헤드를 줄여줍니다.

연결 풀링 동작을 사용자 정의하고 싶다면, 다음과 같이 연결 문자열을 조정할 수 있습니다:

string connectionString = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;Pooling=true;";

일반적인 오류 처리

일반적인 문제에는 잘못된 연결 문자열, 방화벽 제한, 또는 MySQL 서비스가 실행되지 않는 경우가 포함됩니다. 모든 구성 세부 정보가 정확하며 MySQL 서비스가 활성 상태인지 확인하세요.

C#와 MySQL을 사용한 CRUD 작업 수행

데이터베이스 작업을 위한 C# 클래스 생성하기

코드 조직화를 위해 모든 데이터베이스 작업을 처리할 DatabaseHelper 클래스를 생성합니다. 이 클래스는 데이터 삽입, 읽기, 업데이트, 삭제(CRUD) 작업을 위한 메소드를 포함할 것입니다.

using System;
using MySql.Data.MySqlClient;

public class DatabaseHelper
{
    private string connectionString = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;";

    // Method to insert a new employee record
    public void InsertEmployee(string firstName, string lastName, string position, decimal salary)
    {
        using (var connection = new MySqlConnection(connectionString))
        {
            string query = "INSERT INTO Employees (FirstName, LastName, Position, Salary) VALUES (@FirstName, @LastName, @Position, @Salary)";
            MySqlCommand cmd = new MySqlCommand(query, connection);

            // Add parameters to prevent SQL injection
            cmd.Parameters.AddWithValue("@FirstName", firstName);
            cmd.Parameters.AddWithValue("@LastName", lastName);
            cmd.Parameters.AddWithValue("@Position", position);
            cmd.Parameters.AddWithValue("@Salary", salary);

            connection.Open();
            cmd.ExecuteNonQuery(); // Execute the insert command
        }
    }
}

설명:

  • 매개변수화: @Parameter을 사용하면 SQL 삽입의 위험을 줄일 수 있습니다.
  • connection.Open(): MySQL 연결을 엽니다.
  • cmd.ExecuteNonQuery(): 삽입 쿼리를 실행합니다.

MySQL 데이터베이스에 데이터 삽입하기

새로운 직원 데이터를 추가하기 위해 InsertEmployee 메서드를 호출하십시오:

DatabaseHelper dbHelper = new DatabaseHelper();
dbHelper.InsertEmployee("Alice", "Brown", "Project Manager", 90000);

데이터 검색 및 표시

데이터를 검색하고 콘솔에 표시하세요:

public void GetEmployees()
{
    using (var connection = new MySqlConnection(connectionString))
    {
        string query = "SELECT * FROM Employees";
        MySqlCommand cmd = new MySqlCommand(query, connection);
        connection.Open();

        using (MySqlDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                Console.WriteLine($"{reader["FirstName"]} {reader["LastName"]}, Position: {reader["Position"]}, Salary: {reader["Salary"]}");
            }
        }
    }
}

설명:

  • ExecuteReader(): 선택 쿼리를 실행하고 MySqlDataReader 객체를 반환합니다.
  • reader.Read(): 결과 집합을 반복하여 각 직원의 세부 정보를 표시합니다.

레코드 업데이트 및 삭제

다음은 직원의 급여를 업데이트하는 예입니다:

public void UpdateEmployeeSalary(int employeeId, decimal newSalary)
{
    using (var connection = new MySqlConnection(connectionString))
    {
        string query = "UPDATE Employees SET Salary = @Salary WHERE EmployeeID = @EmployeeID";
        MySqlCommand cmd = new MySqlCommand(query, connection);

        // Parameterize the SQL command
        cmd.Parameters.AddWithValue("@Salary", newSalary);
        cmd.Parameters.AddWithValue("@EmployeeID", employeeId);

        connection.Open();
        cmd.ExecuteNonQuery(); // Execute the update command
        Console.WriteLine("Employee salary updated successfully!");
    }
}

업데이트 명령: 매개변수화된 쿼리를 사용하여 EmployeeID에 기반하여 Salary 열을 업데이트합니다.

IronPDF로 MySQL 데이터에서 PDF 생성하기

IronPDF 소개

IronPDF는 개발자가 C# 애플리케이션 내에서 쉽게 PDF 문서를 생성, 편집, 조작할 수 있게 해주는 강력한 라이브러리입니다. 이것은 폭넓은 PDF 기능을 지원하여 자동화된 보고서 생성, 문서 조작, HTML에서 PDF로의 변환을 필요로 하는 데이터 중심 애플리케이션에 완벽한 도구입니다. 동적 웹페이지를 PDF 파일로 변환하거나, 처음부터 맞춤형 PDF를 생성해야 할 때, IronPDF는 몇 줄의 코드로 과정을 단순화합니다.

IronPDF 의 주요 기능

  • HTML에서 PDF로의 변환: IronPDF의 돋보이는 기능 중 하나는 HTML 콘텐츠를 완전히 형식화된 PDF 문서로 변환하는 것입니다. 이 기능은 동적 웹 콘텐츠로부터 보고서를 생성하거나 웹 형식에 저장된 데이터를 작업할 때 특히 유용합니다.
  • PDF 편집: IronPDF는 기존 PDF를 편집할 수 있는 기능을 제공하며, 여기에는 텍스트, 이미지, 테이블 등을 추가, 제거, 수정하는 것이 포함됩니다. 이는 기존 문서를 처리하거나 업데이트해야 하는 애플리케이션에 이상적입니다.
  • PDF 병합 및 분할: IronPDF를 사용하면 여러 PDF를 단일 문서로 병합하거나 큰 PDF를 작은 파일로 분할할 수 있습니다. 이 기능은 대규모 문서 컬렉션을 정리하고 관리하는 데 유용합니다.
  • 스타일링 및 사용자 정의: HTML에서 PDF를 생성할 때, CSS를 사용하여 문서 스타일을 지정하고 애플리케이션의 디자인과 일치하는 사용자 정의 레이아웃을 달성할 수 있습니다. IronPDF는 PDF의 외형을 완전히 제어할 수 있게 해, 특정 요구 사항을 충족할 수 있도록 합니다.

IronPDF를 C# 프로젝트에 설정하기

IronPDF를 사용하려면 Visual Studio의 NuGet 패키지 관리자를 통해 설치하세요:

PM > Install-Package IronPdf

MySQL 데이터를 PDF 형식으로 변환하기

직원 데이터의 PDF 보고서를 생성하는 방법을 보여주는 전체 코드 예는 다음과 같습니다:

using System;
using MySql.Data.MySqlClient;
using IronPdf;

public class Program
{
    private static string connectionString = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;";

    public static void Main(string[] args)
    {
        // Perform CRUD operations
        DatabaseHelper dbHelper = new DatabaseHelper();
        // Insert a new employee
        dbHelper.InsertEmployee("Alice", "Brown", "Project Manager", 90000);
        // Display employees
        dbHelper.GetEmployees();
        // Update an employee's salary
        dbHelper.UpdateEmployeeSalary(1, 95000);
        // Generate a PDF report
        dbHelper.GenerateEmployeeReportPDF();
        Console.WriteLine("Operations completed.");
    }
}

public class DatabaseHelper
{
    private string connectionString = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;";

    // Insert employee into database
    public void InsertEmployee(string firstName, string lastName, string position, decimal salary)
    {
        using (var connection = new MySqlConnection(connectionString))
        {
            string query = "INSERT INTO Employees (FirstName, LastName, Position, Salary) VALUES (@FirstName, @LastName, @Position, @Salary)";
            MySqlCommand cmd = new MySqlCommand(query, connection);
            cmd.Parameters.AddWithValue("@FirstName", firstName);
            cmd.Parameters.AddWithValue("@LastName", lastName);
            cmd.Parameters.AddWithValue("@Position", position);
            cmd.Parameters.AddWithValue("@Salary", salary);
            connection.Open();
            cmd.ExecuteNonQuery();
            Console.WriteLine($"Employee {firstName} {lastName} inserted successfully!");
        }
    }

    // Get employees from the database and display them
    public void GetEmployees()
    {
        using (var connection = new MySqlConnection(connectionString))
        {
            string query = "SELECT * FROM Employees";
            MySqlCommand cmd = new MySqlCommand(query, connection);
            connection.Open();

            using (MySqlDataReader reader = cmd.ExecuteReader())
            {
                Console.WriteLine("\nEmployee List:");
                while (reader.Read())
                {
                    Console.WriteLine($"{reader["EmployeeID"]} - {reader["FirstName"]} {reader["LastName"]}, Position: {reader["Position"]}, Salary: {reader["Salary"]}");
                }
            }
        }
    }

    // Update the salary of an employee
    public void UpdateEmployeeSalary(int employeeId, decimal newSalary)
    {
        using (var connection = new MySqlConnection(connectionString))
        {
            string query = "UPDATE Employees SET Salary = @Salary WHERE EmployeeID = @EmployeeID";
            MySqlCommand cmd = new MySqlCommand(query, connection);
            cmd.Parameters.AddWithValue("@Salary", newSalary);
            cmd.Parameters.AddWithValue("@EmployeeID", employeeId);
            connection.Open();
            cmd.ExecuteNonQuery();
            Console.WriteLine($"Employee ID {employeeId}'s salary updated to {newSalary}.");
        }
    }

    // Generate a PDF report of all employees
    public void GenerateEmployeeReportPDF()
    {
        string htmlContent = "<h1>Employee Report</h1><table border='1'><tr><th>EmployeeID</th><th>First Name</th><th>Last Name</th><th>Position</th><th>Salary</th></tr>";
        
        using (var connection = new MySqlConnection(connectionString))
        {
            string query = "SELECT * FROM Employees";
            MySqlCommand cmd = new MySqlCommand(query, connection);
            connection.Open();

            using (MySqlDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    htmlContent += $"<tr><td>{reader["EmployeeID"]}</td><td>{reader["FirstName"]}</td><td>{reader["LastName"]}</td><td>{reader["Position"]}</td><td>{reader["Salary"]}</td></tr>";
                }
            }
        }
        
        htmlContent += "</table>";

        // Use IronPDF to convert HTML to PDF
        ChromePdfRenderer renderer = new ChromePdfRenderer();
        PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("EmployeeReport.pdf");
        Console.WriteLine("PDF Report generated successfully!");
    }
}

코드 분석

  1. MySQL 데이터베이스 연결:

    • connectionString는 MySQL 서버, 데이터베이스, 사용자 및 비밀번호를 정의합니다.
    • MySqlConnection을 사용하여 연결하고, MySqlCommand로 CRUD 작업을 처리합니다.
  2. 삽입 작업 (InsertEmployee):

    • 매개변수가 있는 쿼리(@FirstName, @LastName 등)와 함께 MySqlCommand을 사용하여 SQL 삽입을 방지합니다.
    • 연결을 연 후 (connection.Open()), ExecuteNonQuery()이 INSERT SQL 문을 실행합니다.
  3. 읽기 작업 (GetEmployees):

    • 모든 직원 기록을 가져오기 위해 SELECT * 쿼리를 실행합니다.
    • 결과 집합을 반복하며 콘솔에 각 기록을 표시하기 위해 MySqlDataReader을 사용합니다.
  4. 업데이트 작업 (UpdateEmployeeSalary):

    • 이 메서드는 직원의 급여를 업데이트하기 위해 employeeIdnewSalary를 수락합니다.
    • 매개변수가 있는 UPDATE SQL 쿼리를 사용합니다.
  5. PDF Generation (GenerateEmployeeReportPDF):

    • 직원 데이터를 단순한 테이블 구조의 HTML 문자열로 수집합니다.
    • IronPDF의 RenderHtmlAsPdf 메서드에 HTML 콘텐츠가 전달되어 PDF 보고서를 생성합니다.
    • 생성된 PDF는 EmployeeReport.pdf로 저장됩니다.

결론

이 기사에서는 C# 애플리케이션과 MySQL을 통합하는 필수 단계를 살펴보았습니다. 데이터베이스 설정, CRUD 작업 수행, IronPDF로 PDF 생성까지 데이터 주도 애플리케이션을 구축하는 데 중요한 다양한 기본적인 주제를 다루었습니다. 주요 개념을 요약하면 다음과 같습니다:

  • MySQL과 C# 통합: MySql.Data 라이브러리를 사용하여 MySQL 데이터베이스에 연결하고, 데이터베이스 연결을 관리하며, 매개변수가 있는 쿼리를 사용하여 CRUD 작업을 수행하는 방법을 설명했습니다. 이는 데이터를 효율적으로 저장, 업데이트 및 검색할 수 있게 하여 보안적이고 조직적으로 관리할 수 있게 합니다.
  • CRUD 작업 수행: 직원 데이터를 삽입, 업데이트, 읽기 위해 예제 메서드를 사용하여 실제 데이터베이스에서 다른 유형의 레코드를 관리할 수 있도록 논리를 확장할 수 있습니다. 매개변수화된 쿼리를 사용하면 SQL 삽입 공격을 완화할 수도 있어 애플리케이션의 보안을 보장할 수 있습니다.
  • PDF 생성용 IronPDF: IronPDF는 동적 HTML 콘텐츠에서 전문적인 PDF를 쉽게 생성할 수 있습니다. MySQL에서 검색된 데이터를 HTML 테이블로 변환하여 맞춤형 보고서를 생성하고 PDF로 저장할 수 있으며, 이는 인보이스, 보고서, 요약 등의 생성을 위해 유용할 수 있습니다. IronPDF의 간단한 API는 애플리케이션 내 PDF 생성을 처리해야 하는 모든 C# 개발자에게 탁월한 도구입니다.

C#과 MySQL을 결합하면 데이터 저장 및 관리가 가능하며, PDF 보고와 같은 고급 기능을 제공하는 견고한 애플리케이션을 구축할 수 있습니다. 금융에서 의료 분야까지 다양한 산업에서 정확한 데이터 관리 및 보고가 중요하기 때문에 이러한 기능은 유용합니다.

C# 애플리케이션에 PDF 생성을 통합하려는 개발자를 위해 전체 기능 세트를 테스트해 볼 수 있는 IronPDF가 있습니다. 단순한 문서부터 정교한 보고서까지 생성해야 할 경우 IronPDF는 워크플로 내에서 PDF 생성을 자동화하는 데 귀중한 도구가 될 수 있습니다.

제이콥 멜러, 팀 아이언 최고기술책임자
최고기술책임자

제이콥 멜러는 Iron Software의 최고 기술 책임자(CTO)이자 C# PDF 기술을 개척한 선구적인 엔지니어입니다. Iron Software의 핵심 코드베이스를 최초로 개발한 그는 창립 초기부터 회사의 제품 아키텍처를 설계해 왔으며, CEO인 캐머런 리밍턴과 함께 회사를 NASA, 테슬라, 그리고 전 세계 정부 기관에 서비스를 제공하는 50명 이상의 직원을 보유한 기업으로 성장시켰습니다.

...
더 읽어보기

관련 기사

Key in blue circle

무료 30일 체험 키를 즉시 받으세요.

Your trial license will be sent to your email address

제한 없음. 100% 무제한 이용. 신용카드 불필요.

bullet_checked신용카드나 계정 생성은 필요하지 않습니다.제한 없음. 100% 무제한 이용. 신용카드 불필요.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
무료 라이브 데모를 예약하세요
Booking Badge

전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.

Iron Software의 고객 로고
부담 없는 무료 상담을 받아보세요
아래 양식을 작성하시거나 sales@ironsoftware.com으로 이메일을 보내주세요.
고객님의 정보는 항상 비밀로 유지됩니다.
전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.
Iron Software의 고객 로고
지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.