AIDE .NET

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

Publié décembre 16, 2024
Partager:

Introduction à l'intégration de C# MySQL

La connexion d'applications C# à des bases de données MySQL permet aux développeurs de tirer parti de la puissance d'une base de données relationnelle pour stocker, récupérer et gérer les données efficacement. Ce guide fournit un processus étape par étape pour intégrerMySQLavec des applications C# et démontre comment générer des PDF à partir des données de votre base de données MySQL en utilisant leBibliothèque IronPDF.

Conditions préalables

Pour suivre ce guide, vous aurez besoin de :

  • Visual Studio ou tout IDE C#
  • Une base de données MySQL(installé 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 depuismysql.com.

  2. Exécutez le programme d'installation et suivez les instructions de configuration. Sélectionnez "Développeur par défaut" pour inclure MySQL Server et MySQL Workbench.

  3. Configurez les identifiants de l'utilisateur root MySQL lors de l'installation et assurez-vous que le service MySQL est en cours d'exécution.

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

  1. Ouvrez MySQL Workbench et connectez-vous au serveur.

  2. Créez une nouvelle base de données et une table d'exemple en utilisant 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)
);
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)
);
CREATE DATABASE SampleDB
Dim SampleDB As USE
CREATE TABLE Employees(EmployeeID INT PRIMARY KEY AUTO_INCREMENT, FirstName VARCHAR(50), LastName VARCHAR(50), Position VARCHAR(50), Salary [DECIMAL](10, 2))
VB   C#
  1. Insérer des données d'exemple :
INSERT INTO Employees (FirstName, LastName, Position, Salary) 
VALUES ('John', 'Doe', 'Software Developer', 80000),
       ('Jane', 'Smith', 'Data Analyst', 75000);
INSERT INTO Employees (FirstName, LastName, Position, Salary) 
VALUES ('John', 'Doe', 'Software Developer', 80000),
       ('Jane', 'Smith', 'Data Analyst', 75000);
INSERT INTO Employees(FirstName, LastName, Position, Salary) VALUES( 'John', 'Doe', 'Software Developer', 80000), ('Jane', 'Smith', 'Data Analyst', 75000);
VB   C#

Configuration de l'utilisateur MySQL pour un accès à distance (facultatif)

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;
CREATE USER 'remoteUser'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON SampleDB.* TO 'remoteUser'@'%';
FLUSH PRIVILEGES;
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'CREATE USER 'remoteUser"@"c%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES @ON SampleDB.* @TO 'remoteUser"@"c%'; FLUSH PRIVILEGES;
VB   C#

Exécutez le programme, et à ce stade, il devrait ressembler à ceci :

Connexion MySQL C# (Comment cela fonctionne pour les développeurs) : Figure 1

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é Connector/NET). Ceci 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#.

    1. Ajoutez la bibliothèque MySql.Data via le gestionnaire de packages NuGet :

      • Cliquez avec le bouton droit sur le projet > Gérer les packages NuGet > Parcourir > recherchez MySql.Data et installez-le.

    Connection MySQL en C# (Fonctionnement pour les développeurs) : Figure 2 - Installation de MySql.Data depuis le gestionnaire de packages NuGet

Écrire le code de connexion

L'exemple de code suivant montre comment établir une connexion à MySQL :

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}");
        }
    }
}
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}");
        }
    }
}
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}")
		End Try
	End Sub
End Class
VB   C#

Connexion MySQL C# (Comment cela fonctionne pour les développeurs) : Figure 3 - Sortie de la console : Connexion réussie

Explication

  • private string server : Représente l'hôte(p.ex.,localhostpour les serveurs locaux ou une adresse IP pour les connexions à distance).
  • chaîne privée baseDeDonnées : Représente le nom de la base de données(SampleDB dans ce cas).
  • chaîne privée motDePasse : Le mot de passe pour authentifier l'utilisateur MySQL.
  • private MySqlConnection connection : Un objet de connexion MySQL utilisé pour ouvrir et gérer la connexion.

    Dans le code ci-dessus, MySqlConnection est utilisé pour établir la connexion avec la base de données MySQL.

Utilisation des enregistrements DNS SRV pour la connexion (optionnel)

Si votre application est hébergée dans le cloud ou nécessite une connexion à 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'adresse 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;"
VB   C#

Mise en pool de connexions

Par défaut, MySQL Connector/NET prend en charge le pool de connexions, ce qui aide à gérer les connexions à la base de données de manière plus efficace. La mise en commun des connexions réduit la surcharge liée à l'ouverture et à la fermeture répétées des connexions en réutilisant les connexions existantes d'un pool.

Si vous souhaitez personnaliser le comportement de la mise en pool des connexions, vous pouvez ajuster votre chaîne de connexion comme suit :

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;"
VB   C#

Gestion des erreurs courantes

Les problèmes courants incluent des chaînes de connexion incorrectes, des restrictions de pare-feu ou un service MySQL qui ne fonctionne 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 une base de données

Pour l'organisation du code, créez une classe DatabaseHelper pour gérer toutes les opérations de base de données. Cette classe contiendra des méthodes pour insérer, lire, mettre à jour et supprimer des données.(CRUD) des opérations.

public class DatabaseHelper
{
    private string connectionString = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;";
    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();
        }
    }
}
public class DatabaseHelper
{
    private string connectionString = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;";
    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();
        }
    }
}
Public Class DatabaseHelper
	Private connectionString As String = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;"
	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()
		End Using
	End Sub
End Class
VB   C#

Explication

  • Paramétrisation : L'utilisation de @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 une base de données MySQL

Pour ajouter de nouvelles données d'employés, 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)
VB   C#

Récupération et affichage des données

Récupérer les données et les afficher 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
VB   C#

Explication

  • ExecuteReader(): Exécute la requête select et retourne un objet MySqlDataReader.
  • reader.Read(): Itère à travers l'ensemble des 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);
        cmd.Parameters.AddWithValue("@Salary", newSalary);
        cmd.Parameters.AddWithValue("@EmployeeID", employeeId);
        connection.Open();
        cmd.ExecuteNonQuery();
        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);
        cmd.Parameters.AddWithValue("@Salary", newSalary);
        cmd.Parameters.AddWithValue("@EmployeeID", employeeId);
        connection.Open();
        cmd.ExecuteNonQuery();
        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)
		cmd.Parameters.AddWithValue("@Salary", newSalary)
		cmd.Parameters.AddWithValue("@EmployeeID", employeeId)
		connection.Open()
		cmd.ExecuteNonQuery()
		Console.WriteLine("Employee salary updated successfully!")
	End Using
End Sub
VB   C#

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

Génération de PDF à partir de données MySQL avec IronPDF

Introduction à IronPDF

IronPDFest une bibliothèque robuste qui permet aux développeurs de créer, éditer et manipuler facilement des documents PDF au sein d'applications C#. Il prend en charge un large éventail de fonctionnalités PDF, ce qui en fait un outil parfait pour les applications orientées données nécessitant une génération de rapports automatisée, une manipulation de documents ou une conversion de 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.

Principales caractéristiques d'IronPDF

  • Conversion HTML en PDF : L'une des caractéristiques phares d'IronPDF est sa capacité àconvertir HTMLcontenu 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 lors de la manipulation de données stockées dans un format web.
  • Édition de PDFs : IronPDF permet l'édition de PDFs 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 doivent traiter ou mettre à jour des documents préexistants.
  • Fusion et division de PDF : Avec IronPDF, vous pouvez facilementfusionner plusieurs PDFdans un seul document oudiviserun grand PDF en fichiers plus petits. Cette fonctionnalité est utile pour organiser et gérer de grandes collections de documents.
  • Styling et personnalisation : Lorsque vous générez des PDFs à partir de HTML, vous pouvez utiliser le CSS pour styliser le document et obtenir une mise en page personnalisée qui correspond au design de votre application. IronPDF vous offre un contrôle total sur l'apparence de vos PDFs, garantissant qu'ils répondent à vos exigences spécifiques.

Configuration d'IronPDF dans votre projet C

Pour utiliserIronPDF, installez-le via le NuGet Package Manager dans Visual Studio :

Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
VB   C#

Conversion des données MySQL au format PDF

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

using IronPdf;
using System;
using MySql.Data.MySqlClient;
public class Program
{
    // MySQL connection string
    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 IronPdf;
using System;
using MySql.Data.MySqlClient;
public class Program
{
    // MySQL connection string
    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 IronPdf
Imports System
Imports MySql.Data.MySqlClient
Public Class Program
	' MySQL connection string
	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
VB   C#

Sortie de la console :

Connexion MySQL en C# (Comment cela fonctionne pour les développeurs) : Figure 4

Sortie PDF

Connexion MySQL en C# (Comment cela fonctionne pour les développeurs) : Figure 5

Analyse du code

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

    • La chaîne de connexion (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 gérez les opérations CRUD avec MySqlCommand.
  2. Opération d'insertion(InsertEmployee) :**

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

    • 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 des résultats et afficher chaque enregistrement dans la console.
  4. Opération de mise à jour(MettreÀJourSalaireEmployé) :

    • La méthode accepte un employeeId et un newSalary pour mettre à jour le salaire de l'employé.
    • Il utilise une requête SQL UPDATE paramétrée.
  5. Génération PDF(GénérerRapportEmployéPDF) :

    • Collecte 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 HtmlToPdf.StaticRenderHtmlAsPdf d'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 créer des applications axées sur les données. Voici un récapitulatif des principaux concepts :

  • Intégration de MySQL et C# : Nous avons dé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 de manière efficace, sécurisée et organisée.
  • Effectuer des 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, garantissant la sécurité de votre application.
  • IronPDF pour la génération de PDF : IronPDF facilite la génération de PDF d'aspect professionnel à 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 au format PDF, 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 PDF au sein de ses applications.

    En combinant C# et MySQL, les développeurs peuvent créer des applications robustes qui stockent et gèrent les données tout en offrant des fonctionnalités avancées telles que la génération de rapports PDF. Ces capacités sont utiles dans divers secteurs, de la finance à la santé, où la gestion et le rapport de données précises sont essentiels.

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

SUIVANT >
Tuples Només en C# (Fonctionnement pour les Développeurs)