IRONSOFTWAREHOME
AKTUALNOŚCI DLA PROGRAMISTÓW

C# Połączenie MySQL (Jak to działa dla deweloperów)

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Jacob Mellor
Updated: 21 kwietnia 2026

Wprowadzenie do integracji C# z MySQL

Łączenie aplikacji C# z bazami danych MySQL umożliwia programistom wykorzystanie mocy relacyjnej bazy danych do efektywnego przechowywania, pobierania i zarządzania danymi. Ten przewodnik zapewnia proces krok po kroku dotyczący integracji MySQL z aplikacjami C# i pokazuje, jak wygenerować pliki PDF z danych w bazie danych MySQL za pomocą biblioteki IronPDF.

Wymagania wstępne

Aby śledzić ten przewodnik, będą potrzebne:

  • Visual Studio lub dowolne IDE C#
  • Baza danych MySQL (zainstalowana i działająca)
  • Biblioteka IronPDF (do generowania PDF)

Konfiguracja bazy danych MySQL

Instalacja i konfiguracja MySQL

  1. Pobierz najnowszą wersję MySQL z mysql.com.
  2. Uruchom instalator i postępuj zgodnie z instrukcjami konfiguracji. Wybierz "Developer Default", aby uwzględnić MySQL Server i MySQL Workbench.
  3. Skonfiguruj poświadczenia użytkownika root MySQL podczas instalacji i upewnij się, że usługa MySQL jest uruchomiona.

Tworzenie przykładowej bazy danych i tabel

  1. Otwórz MySQL Workbench i połącz się z serwerem.
  2. Utwórz nową bazę danych i przykładową tabelę za pomocą poleceń 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. Wstaw przykładowe dane:
INSERT INTO Employees (FirstName, LastName, Position, Salary) 
VALUES ('John', 'Doe', 'Software Developer', 80000),
       ('Jane', 'Smith', 'Data Analyst', 75000);
Text

Konfiguracja użytkownika MySQL do zdalnego dostępu (opcjonalnie)

Aby uzyskać zdalny dostęp, utwórz użytkownika MySQL z niezbędnymi uprawnieniami:

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

Łączenie C# z bazą danych MySQL

Instalowanie biblioteki MySql.Data w C#

Aby połączyć aplikacje C# z MySQL, używamy biblioteki MySQL Connector/NET (często nazywanej Connector/NET). To oficjalny sterownik .NET dla MySQL, który można zainstalować za pomocą NuGet.

  1. Otwórz Visual Studio i utwórz nową aplikację konsolową w języku C#.
  2. Dodaj bibliotekę MySql.Data za pośrednictwem Menedżera pakietów NuGet:
    • Kliknij prawym przyciskiem na projekt > Zarządzaj pakietami NuGet > Przeglądaj > wyszukaj MySql.Data i zainstaluj ją.

Pisanie kodu połączenia

Poniższy przykład kodu pokazuje, jak nawiązać połączenie z 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
        }
    }
}

Wyjaśnienie:

  • Connection String: Zawiera szczegóły takie jak serwer, nazwa bazy danych, ID użytkownika i hasło.
  • MySqlConnection: Służy do nawiązania połączenia.
  • Metoda Open(): Próbuje otworzyć połączenie.
  • Obsługa wyjątków: Przechwytuj wyjątki, aby elegancko obsłużyć błędy połączenia.

Używanie rekordów DNS SRV do połączenia (opcjonalnie)

Jeśli Twoja aplikacja jest hostowana w chmurze lub wymaga połączenia z bazą danych MySQL za pomocą rekordów DNS SRV, możesz zastąpić nazwę serwera odpowiednim wpisem DNS, który rozwiązuje adres IP bazy danych.

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

Pula połączeń

Domyślnie MySQL Connector/NET obsługuje puling połączeń, co pomaga zarządzać połączeniami z bazą danych bardziej efektywnie. Pula połączeń redukuje koszty otwierania i zamykania połączeń wielokrotnie, ponownie używając istniejących połączeń z puli.

Jeśli chcesz dostosować zachowanie puli połączeń, możesz dostosować swój string połączenia w następujący sposób:

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

Obsługa częstych błędów

Częste problemy obejmują nieprawidłowe łańcuchy połączeń, ograniczenia zapory lub niestartującą usługę MySQL. Upewnij się, że wszystkie szczegóły konfiguracji są poprawne i że usługa MySQL jest aktywna.

Wykonywanie operacji CRUD z C# i MySQL

Tworzenie klasy w C# dla operacji na bazie danych

Do organizacji kodu, utwórz klasę DatabaseHelper do obsługi wszystkich operacji bazodanowych. Ta klasa będzie zawierała metody do operacji Insert, Read, Update i Delete danych (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
        }
    }
}

Wyjaśnienie:

  • Parametryzacja: Używanie @Parameter zmniejsza ryzyko ataku SQL injection.
  • connection.Open(): Otwiera połączenie z MySQL.
  • cmd.ExecuteNonQuery(): Wykonuje zapytanie insert.

Wstawianie danych do bazy danych MySQL

Aby dodać nowe dane pracownika, wywołaj metodę InsertEmployee:

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

Pobieranie i wyświetlanie danych

Pobierz dane i wyświetl je w konsoli:

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"]}");
            }
        }
    }
}

Wyjaśnienie:

  • ExecuteReader(): Wykonuje zapytanie select i zwraca obiekt MySqlDataReader.
  • reader.Read(): Przechodzi przez zestaw wyników, wyświetlając szczegóły każdego pracownika.

Aktualizacja i usuwanie rekordów

Oto przykład aktualizacji wynagrodzenia pracownika:

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!");
    }
}

Komenda Update: Używa zparametryzowanego zapytania do aktualizacji kolumny Salary na podstawie EmployeeID.

Generowanie PDF-ów z danych MySQL za pomocą IronPDF

Wprowadzenie do IronPDF

IronPDF to solidna biblioteka, która pozwala programistom łatwo tworzyć, edytować i manipulować dokumentami PDF w aplikacjach C#. Obsługuje szeroką gamę funkcji PDF, co czyni ją doskonałym narzędziem do aplikacji opartych na danych, które wymagają automatycznego generowania raportów, manipulacji dokumentami lub konwersji HTML do PDF. Nieważne, czy potrzebujesz konwertować dynamiczne strony internetowe na pliki PDF, czy generować niestandardowe PDF-y od zera, IronPDF upraszcza proces za pomocą kilku linijek kodu.

Najważniejsze cechy IronPDF

  • Konwersja HTML do PDF: Jedną z wyróżniających się funkcji IronPDF jest jego zdolność do konwersji treści HTML na w pełni sformatowane dokumenty PDF. Ta funkcja jest szczególnie przydatna do generowania raportów z dynamicznej zawartości internetowej lub podczas pracy z danymi przechowywanymi w formacie internetowym.
  • Edytowanie PDF-ów: IronPDF umożliwia edytowanie istniejących PDF-ów, w tym dodawanie, usuwanie i modyfikowanie treści, takich jak tekst, obrazy, tabele i więcej. Jest to idealne dla aplikacji, które muszą przetwarzać lub aktualizować wcześniej istniejące dokumenty.
  • Scalanie i dzielenie PDF-ów: Za pomocą IronPDF można łatwo scalić wiele PDF-ów w jeden dokument lub podzielić duży PDF na mniejsze pliki. Ta funkcja jest przydatna do organizowania i zarządzania dużymi zbiorami dokumentów.
  • Stylizacja i personalizacja: Podczas generowania PDF-ów z HTML można użyć CSS do stylizacji dokumentu i osiągnięcia niestandardowego układu dopasowanego do twojego projektu aplikacji. IronPDF daje pełną kontrolę nad wyglądem twoich PDF-ów, zapewniając, że spełniają one twoje specyficzne wymagania.

Konfigurowanie IronPDF w projekcie C#

Aby używać IronPDF, zainstalować go przez Menedżer Pakietów NuGet w Visual Studio:

PM > Install-Package IronPdf

Konwersja danych MySQL do formatu PDF

Oto pełny przykład kodu pokazujący, jak stworzyć raport PDF z danych pracowniczych:

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!");
    }
}

Rozbicie kodu

  1. Połączenie z bazą danych MySQL:

    • connectionString definiuje serwer MySQL, bazę danych, użytkownika i hasło.
    • Łączysz się używając MySqlConnection i obsługujesz operacje CRUD za pomocą MySqlCommand.
  2. Operacja wstawiania (InsertEmployee):

    • Używa MySqlCommand z zapytaniami parametryzowanymi (@FirstName, @LastName itd.), aby zapobiec atakom SQL injection.
    • Po otwarciu połączenia (connection.Open()), ExecuteNonQuery() wykonuje instrukcję SQL INSERT.
  3. Operacja odczytu (GetEmployees):

    • Wykonuje zapytanie SELECT *, aby pobrać wszystkie rekordy pracowników.
    • Używa MySqlDataReader do iteracji po zestawie wyników i wyświetlenia każdego rekordu w konsoli.
  4. Operacja aktualizacji (UpdateEmployeeSalary):

    • Metoda akceptuje employeeId i newSalary do aktualizacji pensji pracownika.
    • Używa zparametryzowanego zapytania UPDATE SQL.
  5. PDF Generation (GenerateEmployeeReportPDF):

    • Zbiera dane pracowników do łańcucha HTML o prostej strukturze tabeli.
    • Zawartość HTML jest przekazywana do metody RenderHtmlAsPdf IronPDF, aby wygenerować raport PDF.
    • Wygenerowany PDF jest zapisany jako EmployeeReport.pdf.

Wnioski

W tym artykułe przeszliśmy przez podstawowe kroki integracji MySQL z aplikacją w C#. Od konfiguracji bazy danych i wykonywania operacji CRUD po generowanie PDF-ów za pomocą IronPDF, omówiliśmy szeroki zakres podstawowych tematów, które są kluczowe dla budowania aplikacji opartych na danych. Oto podsumowanie najważniejszych pojęć:

  • Integracja MySQL i C#: Pokazaliśmy, jak połączyć się z bazą danych MySQL za pomocą biblioteki MySql.Data, zarządzać połączeniami z bazą danych i wykonywać operacje CRUD przy użyciu zparametryzowanych zapytań. To zapewnia, że dane mogą być efektywnie przechowywane, aktualizowane i pobierane w bezpieczny i uporządkowany sposób.
  • Wykonywanie operacji CRUD: Dzięki przykładowym metodom wstawiania, aktualizowania i odczytywania danych pracownika, możesz rozszerzyć tę logikę na zarządzanie innymi typami rekordów w rzeczywistej bazie danych. Użycie zparametryzowanych zapytań pomaga również w łagodzeniu ataków wstrzyknięcia SQL, zapewniając bezpieczeństwo twojej aplikacji.
  • IronPDF do generowania PDF-ów: IronPDF upraszcza generowanie profesjonalnie wyglądających PDF-ów z dynamicznej zawartości HTML. Przez konwersję danych pobieranych z MySQL na tabelę HTML, możemy tworzyć niestandardowe raporty i zapisywać je jako PDF-y, co może być przydatne do generowania faktur, raportów, podsumowań i więcej. Prosty interfejs API IronPDF czyni go doskonałym narzędziem dla każdego programisty C# potrzebującego obsługi generowania PDF-ów w swoich aplikacjach.

Łącząc C# i MySQL, programiści mogą budować solidne aplikacje, które przechowują i zarządzają danymi, oferując jednocześnie zaawansowane funkcjonalności, takie jak raportowanie PDF. Te możliwości są przydatne w różnych branżach, od finansów po opiekę zdrowotną, gdzie kluczowe jest dokładne zarządzanie danymi i raportowanie.

Dla programistów pragnących włączyć generowanie PDF-ów do swoich aplikacji C#, IronPDF, który pozwala przetestować pełny zestaw funkcji. Niezależnie od tego, czy potrzebujesz generować proste dokumenty, czy zaawansowane raporty, IronPDF może być nieocenionym narzędziem do automatyzacji tworzenia PDF-ów w ramach swojego przepływu pracy.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczącą ponad 50 osób, obsługującą NASA, Teslę i światowe agencje rządowe.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta