Passer au contenu du pied de page
.NET AIDE

C# MySQL Connection (Comment ça fonctionne pour les développeurs)

Introduction à l'intégration MySQL avec C

Connecter des applications C# à des bases de données MySQL permet aux développeurs d'exploiter la puissance d'une base de données relationnelle pour stocker, récupérer et gérer les données efficacement. This guide provides a step-by-step process to integrate MySQL with C# applications and demonstrates how to generate PDFs from the data within your MySQL database using the IronPDF library.

Prérequis

Pour suivre ce guide, vous aurez besoin :

  • Visual Studio ou tout autre IDE C#
  • Une base de données MySQL (installée et en cours d'exécution)
  • La bibliothèque IronPDF (pour la génération de PDF)

Configuration de la base de données MySQL

Installation et configuration de MySQL

  1. Téléchargez la dernière version de MySQL depuis mysql.com.
  2. Exécutez l'installateur et suivez les instructions de configuration. Sélectionnez "Développeur par défaut" pour inclure le serveur MySQL et MySQL Workbench.
  3. Configurez les informations d'identification de l'utilisateur root de MySQL pendant la configuration et assurez-vous que le service MySQL fonctionne.

Création d'une base de données et de tables d'échantillons

  1. Ouvrez MySQL Workbench et connectez-vous au serveur.
  2. Créez une nouvelle base de données et une table d'échantillon à l'aide des commandes 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. Insérez des données d'échantillon :
INSERT INTO Employees (FirstName, LastName, Position, Salary) 
VALUES ('John', 'Doe', 'Software Developer', 80000),
       ('Jane', 'Smith', 'Data Analyst', 75000);

Configuration d'un utilisateur MySQL pour l'accès à distance (optionnel)

Pour l'accès à distance, créez un utilisateur MySQL avec les autorisations nécessaires :

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

Connexion de C# à la base de données MySQL

Installation de la bibliothèque MySql.Data en C

Pour connecter des applications C# à MySQL, nous utilisons la bibliothèque MySQL Connector/NET (souvent appelée Connector/NET). C'est le pilote officiel .NET pour MySQL, qui peut être installé via NuGet.

  1. Ouvrez Visual Studio et créez une nouvelle application console C#.
  2. Ajoutez la bibliothèque MySql.Data via le gestionnaire de paquets NuGet :
    • Cliquez droit sur le projet > Gérer les paquets NuGet > Parcourir > recherchez MySql.Data et installez-le.

Écriture du code de connexion

L'exemple de code suivant montre comment établir une connexion à 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

Explication :

  • Chaîne de connexion : Contient des détails tels que le serveur, le nom de la base de données, l'ID utilisateur et le mot de passe.
  • MySqlConnection : Utilisé pour établir la connexion.
  • Méthode Open() : Tente d'ouvrir la connexion.
  • Gestion des exceptions : Capture les exceptions pour gérer les erreurs de connexion de manière élégante.

Utilisation des enregistrements DNS SRV pour la connexion (optionnel)

Si votre application est hébergée dans le cloud ou nécessite de se connecter à une base de données MySQL via des enregistrements DNS SRV, vous pouvez remplacer le nom du serveur par l'entrée DNS correspondante qui résout l'IP de la base de données.

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

Gestion des connexions (Connection Pooling)

Par défaut, MySQL Connector/NET prend en charge la gestion des connexions, ce qui aide à gérer les connexions à la base de données plus efficacement. La gestion des connexions réduit le surcoût d'ouvrir et de fermer des connexions à plusieurs reprises en réutilisant les connexions existantes à partir d'un pool.

Si vous souhaitez personnaliser le comportement de la gestion des connexions, vous pouvez ajuster votre chaîne de connexion comme ceci :

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

Gestion des erreurs courantes

Les problèmes courants incluent des chaînes de connexion incorrectes, des restrictions de pare-feu ou le service MySQL ne fonctionnant pas. Assurez-vous que tous les détails de configuration sont corrects et que le service MySQL est actif.

Effectuer des opérations CRUD avec C# et MySQL

Création d'une classe C# pour les opérations sur la base de données

Pour organiser le code, créez une classe DatabaseHelper pour gérer toutes les opérations sur la base de données. Cette classe contiendra des méthodes pour les opérations d'insertion, de lecture, de mise à jour et de suppression des données (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

Explication :

  • Paramétrage : Utiliser un @Parameter réduit le risque d'injection SQL.
  • connection.Open() : Ouvre la connexion MySQL.
  • cmd.ExecuteNonQuery() : Exécute la requête d'insertion.

Insertion de données dans la base de données MySQL

Pour ajouter des données d'employé, appelez la méthode 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

Récupération et affichage de données

Récupérez des données et affichez-les dans la console :

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

Explication :

  • ExecuteReader() : Exécute la requête de sélection et retourne un objet MySqlDataReader.
  • reader.Read() : Itère à travers l'ensemble de résultats, affichant les détails de chaque employé.

Mise à jour et suppression des enregistrements

Voici un exemple pour mettre à jour le salaire d'un employé :

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

Commande de mise à jour : Utilise une requête paramétrée pour mettre à jour la colonne Salaire en fonction de l'EmployeeID.

Générer des PDF à partir des données MySQL avec IronPDF

Introduction à IronPDF

IronPDF est une bibliothèque robuste qui permet aux développeurs de créer, éditer et manipuler facilement des documents PDF au sein des applications C#. Elle prend en charge une large gamme de fonctionnalités PDF, ce qui en fait un outil parfait pour les applications basées sur les données qui nécessitent une génération automatique de rapports, une manipulation de documents ou une conversion HTML en PDF. Que vous ayez besoin de convertir des pages web dynamiques en fichiers PDF ou de générer des PDF personnalisés à partir de zéro, IronPDF simplifie le processus avec quelques lignes de code.

Caractéristiques clés d'IronPDF

  • Conversion HTML en PDF : L'une des caractéristiques distinctives d'IronPDF est sa capacité à convertir le contenu HTML en documents PDF entièrement formatés. Cette fonctionnalité est particulièrement utile pour générer des rapports à partir de contenu web dynamique ou lorsqu'on travaille avec des données stockées dans un format web.
  • Édition de PDF : IronPDF permet l'édition de PDF existants, y compris l'ajout, la suppression et la modification de contenu, tel que du texte, des images, des tableaux, et plus encore. C'est idéal pour les applications qui ont besoin de traiter ou de mettre à jour des documents préexistants.
  • PDF Merging and Splitting: With IronPDF, you can easily merge multiple PDFs into a single document or split a large PDF into smaller files. Cette fonctionnalité est utile pour organiser et gérer de grandes collections de documents.
  • Style et personnalisation : Lors de la génération de PDF à partir de HTML, vous pouvez utiliser du CSS pour styliser le document et obtenir une mise en page personnalisée qui correspond au design de votre application. IronPDF vous donne un contrôle total sur l'apparence de vos PDF, garantissant qu'ils répondent à vos exigences spécifiques.

Configurer IronPDF dans votre projet C

Pour utiliser IronPDF, installez-le via le Gestionnaire de Packages NuGet dans Visual Studio :

Install-Package IronPdf

Conversion de données MySQL au format PDF

Voici l'exemple de code complet qui montre comment créer un rapport PDF des données des employés :

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

Analyse du code

  1. Connexion à la base de données MySQL :

    • La connectionString définit le serveur MySQL, la base de données, l'utilisateur et le mot de passe.
    • Vous vous connectez en utilisant MySqlConnection et effectuez des opérations CRUD avec MySqlCommand.
  2. Opération d'insertion (InsertEmployee) :

    • Utilise MySqlCommand avec des requêtes paramétrées (@FirstName, @LastName, etc.) pour empêcher l'injection SQL.
    • Après avoir ouvert la connexion (connection.Open()), ExecuteNonQuery() exécute la commande SQL INSERT.
  3. Opération de lecture (GetEmployees) :

    • Exécute une requête SELECT * pour récupérer tous les enregistrements des employés.
    • Utilise un MySqlDataReader pour itérer sur l'ensemble de résultats et afficher chaque enregistrement dans la console.
  4. Opération de mise à jour (UpdateEmployeeSalary) :

    • La méthode accepte un employeeId et un newSalary pour mettre à jour le salaire de l'employé.
    • Elle utilise une requête SQL UPDATE paramétrée.
  5. Génération de PDF (GenerateEmployeeReportPDF) :
    • Recueille les données des employés dans une chaîne HTML avec une structure de tableau simple.
    • Le contenu HTML est passé à la méthode RenderHtmlAsPdf de IronPDF pour générer un rapport PDF.
    • Le PDF résultant est enregistré sous le nom EmployeeReport.pdf.

Conclusion

Dans cet article, nous avons parcouru les étapes essentielles pour intégrer MySQL avec une application C#. De la configuration de la base de données et de l'exécution des opérations CRUD à la génération de PDF avec IronPDF, nous avons couvert un large éventail de sujets fondamentaux qui sont cruciaux pour construire des applications basées sur les données. Voici un récapitulatif des concepts majeurs :

  • Intégration MySQL et C# : Nous avons montré comment se connecter à une base de données MySQL en utilisant la bibliothèque MySql.Data, gérer les connexions à la base de données et effectuer des opérations CRUD en utilisant des requêtes paramétrées. Cela garantit que les données peuvent être stockées, mises à jour et récupérées efficacement de manière sécurisée et organisée.
  • Exécution d'opérations CRUD : Avec les méthodes d'exemple pour insérer, mettre à jour et lire les données des employés, vous pouvez étendre cette logique pour gérer d'autres types d'enregistrements dans une base de données réelle. L'utilisation de requêtes paramétrées aide également à atténuer les attaques par injection SQL, assurant ainsi la sécurité de votre application.
  • IronPDF pour la génération de PDF : IronPDF simplifie la création de PDF de qualité professionnelle à partir de contenu HTML dynamique. En convertissant les données récupérées de MySQL en un tableau HTML, nous pouvons créer des rapports personnalisés et les enregistrer sous forme de PDFs, ce qui peut être utile pour générer des factures, des rapports, des résumés, et plus encore. L'API simple d'IronPDF en fait un excellent outil pour tout développeur C# ayant besoin de gérer la génération de PDFs dans ses applications.

En combinant C# et MySQL, les développeurs peuvent construire des applications robustes qui stockent et gèrent les données tout en offrant des fonctionnalités avancées comme le reporting en PDF. Ces capacités sont utiles dans tous les secteurs, de la finance à la santé, où la gestion précise des données et le reporting sont essentiels.

Pour les développeurs cherchant à incorporer la génération de PDF dans leurs applications C#, IronPDF vous permet de tester l'ensemble des fonctionnalités. Que vous ayez besoin de générer des documents simples ou des rapports sophistiqués, IronPDF peut être un outil inestimable pour automatiser la création de PDF dans votre flux de travail.

Questions Fréquemment Posées

Quels sont les prérequis pour intégrer MySQL avec des applications C# ?

Pour intégrer MySQL avec des applications C#, vous avez besoin d'un IDE comme Visual Studio, d'une base de données MySQL en cours d'exécution et de IronPDF pour la génération de PDF à partir du contenu de la base de données.

Comment puis-je convertir des données MySQL en PDF en utilisant C# ?

Vous pouvez convertir des données MySQL en PDF en transformant d'abord les données en une chaîne HTML puis en utilisant la méthode RenderHtmlAsPdf de IronPDF pour générer un document PDF.

Comment installer et configurer MySQL pour une utilisation avec C# ?

Installez MySQL en le téléchargeant depuis mysql.com, exécutez l'installateur et suivez les instructions d'installation. Choisissez 'Développeur par défaut' pour inclure MySQL Server et Workbench et configurez les identifiants de l'utilisateur root.

Quelle bibliothèque est recommandée pour la connectivité C# et MySQL ?

La bibliothèque MySQL Connector/NET est recommandée pour établir la connectivité entre les applications C# et une base de données MySQL. Elle permet l'utilisation de chaînes de connexion pour faciliter la communication.

Comment puis-je sécuriser mes requêtes SQL lorsque j'utilise C# avec MySQL ?

Pour sécuriser les requêtes SQL, utilisez des requêtes paramétrées qui aident à prévenir les attaques par injection SQL en assurant une validation correcte des entrées.

Qu'est-ce que le pooling de connexions dans le contexte de MySQL et C# ?

Le pooling de connexions fait référence à la pratique de réutiliser les connexions de bases de données à partir d'un pool, ce qui améliore l'efficacité en réduisant les frais généraux associés à l'ouverture et la fermeture répétée des connexions.

Comment créer une base de données et une table d'exemple dans MySQL pour l'intégration avec C# ?

Ouvrez MySQL Workbench, connectez-vous à votre serveur et utilisez des commandes SQL telles que CREATE DATABASE SampleDB; et CREATE TABLE Employees (...); pour configurer une base de données et une table d'exemple.

Quelles caractéristiques devrais-je rechercher dans une bibliothèque PDF pour les applications C# ?

Une bibliothèque PDF robuste pour C# devrait offrir des fonctionnalités comme la conversion HTML en PDF, l'édition de PDF, la fusion et la division, ainsi que la possibilité d'appliquer des styles personnalisés en utilisant CSS, comme ceux fournis par IronPDF.

Comment réaliser des opérations CRUD sur une base de données MySQL en utilisant C# ?

Implémentez les opérations CRUD en créant une classe d'assistance en C# qui utilise des commandes SQL paramétrées au sein de méthodes pour Insérer, Lire, Mettre à jour et Supprimer des données dans la base de données MySQL.

Comment puis-je mettre à jour les détails d'un employé dans une base de données MySQL en utilisant C# ?

Mettez à jour les détails d'un employé en écrivant une méthode en C# qui utilise une commande SQL UPDATE paramétrée, permettant des modifications telles que des mises à jour de salaire basées sur EmployeeID.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite