Przejdź do treści stopki
POMOC .NET

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

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)
);
  1. Wstaw przykładowe dane:
INSERT INTO Employees (FirstName, LastName, Position, Salary) 
VALUES ('John', 'Doe', 'Software Developer', 80000),
       ('Jane', 'Smith', 'Data Analyst', 75000);

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;

Łą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
        }
    }
}
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
        }
    }
}
Imports System
Imports MySql.Data.MySqlClient

Public Class Program
	' Connection string containing the server, database, user credentials, etc.
	Private connectionString As String = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;"

	Private Sub Initialize()
		' Create a MySQL connection object
		Dim connection As New MySqlConnection(connectionString)
		Try
			connection.Open()
			Console.WriteLine("Connected to MySQL Database!")
		Catch ex As Exception
			Console.WriteLine($"Error: {ex.Message}")
		Finally
			connection.Close() ' Ensure the connection is closed after use
		End Try
	End Sub
End Class
$vbLabelText   $csharpLabel

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;";
string connectionString = "Server=mysql.example.com;Database=SampleDB;User ID=root;Password=yourpassword;";
Dim connectionString As String = "Server=mysql.example.com;Database=SampleDB;User ID=root;Password=yourpassword;"
$vbLabelText   $csharpLabel

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;";
string connectionString = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;Pooling=true;";
Dim connectionString As String = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;Pooling=true;"
$vbLabelText   $csharpLabel

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 C# do operacji na bazie danych

Dla organizacji kodu utwórz klasę DatabaseHelper, aby obsłużyć wszystkie operacje na bazie danych. 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
        }
    }
}
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
        }
    }
}
Imports System
Imports MySql.Data.MySqlClient

Public Class DatabaseHelper
	Private connectionString As String = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;"

	' Method to insert a new employee record
	Public Sub InsertEmployee(ByVal firstName As String, ByVal lastName As String, ByVal position As String, ByVal salary As Decimal)
		Using connection = New MySqlConnection(connectionString)
			Dim query As String = "INSERT INTO Employees (FirstName, LastName, Position, Salary) VALUES (@FirstName, @LastName, @Position, @Salary)"
			Dim cmd As 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
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

Wyjaśnienie:

  • Parametryzacja: Użycie @Parameter zmniejsza ryzyko wstrzyknięcia SQL.
  • 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);
DatabaseHelper dbHelper = new DatabaseHelper();
dbHelper.InsertEmployee("Alice", "Brown", "Project Manager", 90000);
Dim dbHelper As New DatabaseHelper()
dbHelper.InsertEmployee("Alice", "Brown", "Project Manager", 90000)
$vbLabelText   $csharpLabel

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"]}");
            }
        }
    }
}
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"]}");
            }
        }
    }
}
Public Sub GetEmployees()
	Using connection = New MySqlConnection(connectionString)
		Dim query As String = "SELECT * FROM Employees"
		Dim cmd As New MySqlCommand(query, connection)
		connection.Open()

		Using reader As MySqlDataReader = cmd.ExecuteReader()
			Do While reader.Read()
				Console.WriteLine($"{reader("FirstName")} {reader("LastName")}, Position: {reader("Position")}, Salary: {reader("Salary")}")
			Loop
		End Using
	End Using
End Sub
$vbLabelText   $csharpLabel

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!");
    }
}
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!");
    }
}
Public Sub UpdateEmployeeSalary(ByVal employeeId As Integer, ByVal newSalary As Decimal)
	Using connection = New MySqlConnection(connectionString)
		Dim query As String = "UPDATE Employees SET Salary = @Salary WHERE EmployeeID = @EmployeeID"
		Dim cmd As 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!")
	End Using
End Sub
$vbLabelText   $csharpLabel

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

Generowanie PDF-ow 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.

Konfiguracja IronPDF w twoim projekcie C

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

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!");
    }
}
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!");
    }
}
Imports Microsoft.VisualBasic
Imports System
Imports MySql.Data.MySqlClient
Imports IronPdf

Public Class Program
	Private Shared connectionString As String = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;"

	Public Shared Sub Main(ByVal args() As String)
		' Perform CRUD operations
		Dim dbHelper As 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.")
	End Sub
End Class

Public Class DatabaseHelper
	Private connectionString As String = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;"

	' Insert employee into database
	Public Sub InsertEmployee(ByVal firstName As String, ByVal lastName As String, ByVal position As String, ByVal salary As Decimal)
		Using connection = New MySqlConnection(connectionString)
			Dim query As String = "INSERT INTO Employees (FirstName, LastName, Position, Salary) VALUES (@FirstName, @LastName, @Position, @Salary)"
			Dim cmd As 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!")
		End Using
	End Sub

	' Get employees from the database and display them
	Public Sub GetEmployees()
		Using connection = New MySqlConnection(connectionString)
			Dim query As String = "SELECT * FROM Employees"
			Dim cmd As New MySqlCommand(query, connection)
			connection.Open()

			Using reader As MySqlDataReader = cmd.ExecuteReader()
				Console.WriteLine(vbLf & "Employee List:")
				Do While reader.Read()
					Console.WriteLine($"{reader("EmployeeID")} - {reader("FirstName")} {reader("LastName")}, Position: {reader("Position")}, Salary: {reader("Salary")}")
				Loop
			End Using
		End Using
	End Sub

	' Update the salary of an employee
	Public Sub UpdateEmployeeSalary(ByVal employeeId As Integer, ByVal newSalary As Decimal)
		Using connection = New MySqlConnection(connectionString)
			Dim query As String = "UPDATE Employees SET Salary = @Salary WHERE EmployeeID = @EmployeeID"
			Dim cmd As 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}.")
		End Using
	End Sub

	' Generate a PDF report of all employees
	Public Sub GenerateEmployeeReportPDF()
		Dim htmlContent As String = "<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 connection = New MySqlConnection(connectionString)
			Dim query As String = "SELECT * FROM Employees"
			Dim cmd As New MySqlCommand(query, connection)
			connection.Open()

			Using reader As MySqlDataReader = cmd.ExecuteReader()
				Do 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>"
				Loop
			End Using
		End Using

		htmlContent &= "</table>"

		' Use IronPDF to convert HTML to PDF
		Dim renderer As New ChromePdfRenderer()
		Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
		pdf.SaveAs("EmployeeReport.pdf")
		Console.WriteLine("PDF Report generated successfully!")
	End Sub
End Class
$vbLabelText   $csharpLabel

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 Insert (InsertEmployee):

    • Używa MySqlCommand z zparametryzowanymi zapytaniami (@FirstName, @LastName, itp.), aby zapobiec wstrzyknięciu SQL.
    • Po otwarciu połączenia (connection.Open()), ExecuteNonQuery() uruchamia instrukcję INSERT SQL.
  3. Operacja Read (GetEmployees):

    • Wykonuje SELECT * zapytanie, aby pobrać wszystkie rekordy pracownicze.
    • Używa MySqlDataReader, aby przejść przez zestaw wyników i wyświetlić każdy rekord w konsoli.
  4. Operacja Update (UpdateEmployeeSalary):

    • Metoda przyjmuje employeeId i newSalary, aby zaktualizować wynagrodzenie pracownika.
    • Używa zparametryzowanego zapytania UPDATE SQL.
  5. Generowanie PDF (GenerateEmployeeReportPDF):
    • Zbiera dane pracowników do łańcucha HTML o prostej strukturze tabeli.
    • Treść HTML jest przekazywana do metody RenderHtmlAsPdf biblioteki IronPDF, aby wygenerować raport PDF.
    • Wynikowy PDF jest zapisywany jako EmployeeReport.pdf.

Wnioski

W tym artykule 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.

Często Zadawane Pytania

Jakie są wymagania wstępne do integracji MySQL z aplikacjami w C#?

Aby zintegrować MySQL z aplikacjami w C#, potrzebujesz IDE, takiego jak Visual Studio, działającą bazę danych MySQL i IronPDF do generowania PDF z zawartości bazy danych.

Jak mogę przekonwertować dane MySQL na PDF za pomocą C#?

Możesz przekonwertować dane MySQL na PDF, najpierw przekształcając dane na ciąg HTML, a następnie używając metody RenderHtmlAsPdf z IronPDF do wygenerowania dokumentu PDF.

Jak zainstalować i skonfigurować MySQL do użytku z C#?

Zainstaluj MySQL pobierając go z mysql.com, uruchom instalator i postępuj zgodnie z instrukcjami instalacji. Wybierz 'Developer Default' podczas konfiguracji, aby włączyć MySQL Server i Workbench, i skonfiguruj dane uwierzytelniające użytkownika root.

Jaka biblioteka jest zalecana do łączności bazy danych C# i MySQL?

Biblioteka MySQL Connector/NET jest zalecana do nawiązania łączności pomiędzy aplikacjami w C# a bazą danych MySQL. Pozwala na użycie ciągów połączeniowych do ułatwienia komunikacji.

Jak mogę zabezpieczyć moje zapytania SQL przy użyciu C# z MySQL?

Aby zabezpieczyć zapytania SQL, używaj zapytań z parametrami, co pomaga zapobiegać atakom SQL injection poprzez zapewnienie odpowiedniej walidacji danych wejściowych.

Czym jest puli połączeń w kontekście MySQL i C#?

Pula połączeń odnosi się do praktyki ponownego wykorzystywania połączeń z bazą danych z puli, co zwiększa wydajność poprzez zmniejszenie obciążenia związanego z wielokrotnym otwieraniem i zamykaniem połączeń.

Jak utworzyć przykładową bazę danych i tabelę w MySQL w celu integracji z C#?

Otwórz MySQL Workbench, połącz się z serwerem i użyj poleceń SQL, takich jak CREATE DATABASE SampleDB; oraz CREATE TABLE Employees (...);, aby skonfigurować przykładową bazę danych i tabelę.

Na jakie funkcje powinienem zwrócić uwagę w bibliotece PDF dla aplikacji C#?

Solidna biblioteka PDF dla języka C# powinna oferować funkcje takie jak konwersja HTML do PDF, edycja plików PDF, scalanie i dzielenie oraz możliwość stosowania niestandardowych stylów przy użyciu CSS, podobnie jak te oferowane przez IronPDF.

Jak wykonać operacje CRUD na bazie danych MySQL przy użyciu języka C#?

Zaimplementuj operacje CRUD, tworząc klasę pomocniczą w języku C#, która wykorzystuje sparametryzowane polecenia SQL w ramach metod do wstawiania, odczytu, aktualizacji i usuwania danych w bazie danych MySQL.

Jak mogę zaktualizować dane pracownika w bazie danych MySQL przy użyciu języka C#?

Zaktualizuj dane pracownika, pisząc metodę w języku C#, która wykorzystuje sparametryzowaną instrukcję SQL UPDATE, umożliwiającą modyfikacje, takie jak aktualizacja wynagrodzenia na podstawie identyfikatora EmployeeID.

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ą...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie