AYUDA .NET

Conexión MySQL en C# (Cómo Funciona para Desarrolladores)

Publicado en 16 de diciembre, 2024
Compartir:

Introducción a la integración de C# MySQL

Conectar aplicaciones C# a bases de datos MySQL permite a los desarrolladores aprovechar el poder de una base de datos relacional para almacenar, recuperar y gestionar datos de manera eficiente. Esta guía proporciona un proceso paso a paso para integrarMySQLcon aplicaciones C# y demuestra cómo generar PDFs a partir de los datos dentro de su base de datos MySQL utilizando el Biblioteca IronPDF.

Requisitos previos

Para seguir esta guía, necesitarás:

  • Visual Studio o cualquier IDE de C#
  • Una base de datos MySQL(instalado y en funcionamiento)
  • La biblioteca IronPDF(para la generación de PDF)

Configuración de la base de datos MySQL

Instalación y configuración de MySQL

  1. Descargue la última versión de MySQL desdemysql.com.

  2. Ejecuta el instalador y sigue las instrucciones de configuración. Seleccione "Developer Default" para incluir MySQL Server y MySQL Workbench.

  3. Configure las credenciales del usuario root de MySQL durante la configuración y asegúrese de que el servicio MySQL esté en funcionamiento.

Creación de una base de datos de muestra y tablas

  1. Abre MySQL Workbench y conéctate al servidor.

  2. Cree una nueva base de datos y una tabla de muestra usando comandos 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. Insertar datos de muestra:
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#

Configuración del usuario de MySQL para acceso remoto (Opcional)

Para el acceso remoto, cree un usuario de MySQL con los permisos necesarios:

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#

Ejecute el programa, y ahora debería verse así:

Conexión MySQL en C# (Cómo funciona para desarrolladores): Figura 1

Conectando C# a la base de datos MySQL

Instalación de la biblioteca MySql.Data en C

Para conectar aplicaciones C# a MySQL, utilizamos la biblioteca MySQL Connector/NET(a menudo referido como Connector/NET). Este es el controlador oficial de .NET para MySQL, que se puede instalar a través de NuGet.

  1. Abre Visual Studio y crea una nueva Aplicación de Consola en C#.

    1. Agrega la biblioteca MySql.Data a través del Administrador de paquetes NuGet:

      • Haga clic derecho en el proyecto > Administrar paquetes NuGet > Examinar > busque MySql.Data e instálelo.

    Conexión MySQL C# (Cómo funciona para desarrolladores): Figura 2 - Instalando MySql.Data desde el Administrador de paquetes NuGet

Escribiendo el código de conexión

El siguiente ejemplo de código demuestra cómo establecer una conexión a 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#

Conexión MySQL en C# (Cómo funciona para desarrolladores): Figura 3 - Salida de consola: Conexión exitosa

Explicación

  • cadena privada servidor: Representa el host(por ejemplolocalhostpara servidores locales o una dirección IP para conexiones remotas).
  • private string database: Representa el nombre de la base de datos(SampleDB en este caso).
  • private string password: La contraseña para autenticar al usuario de MySQL.
  • private MySqlConnection connection: Un objeto de conexión MySQL utilizado para abrir y gestionar la conexión.

    En el código anterior, se utiliza MySqlConnection para establecer la conexión con la base de datos MySQL.

Uso de registros DNS SRV para la conexión (Opcional)

Si su aplicación está alojada en la nube o requiere conectarse a una base de datos MySQL a través de registros DNS SRV, puede reemplazar el nombre del servidor con la entrada DNS correspondiente que resuelve la IP de la base de datos.

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#

Conexión agrupada

Por defecto, MySQL Connector/NET admite el agrupamiento de conexiones, lo que ayuda a gestionar las conexiones de la base de datos de manera más eficiente. La agrupación de conexiones reduce la sobrecarga de abrir y cerrar conexiones repetidamente al reutilizar conexiones existentes de un grupo.

Si desea personalizar el comportamiento de la agrupación de conexiones, puede ajustar su cadena de conexión de esta manera:

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#

Manejo de errores comunes

Los problemas comunes incluyen cadenas de conexión incorrectas, restricciones de firewall o el servicio de MySQL que no está ejecutándose. Asegúrate de que todos los detalles de configuración sean correctos y que el servicio MySQL esté activo.

Realización de operaciones CRUD con C# y MySQL

Creación de una clase C# para operaciones de base de datos

Para la organización del código, crea una clase DatabaseHelper para manejar todas las operaciones de la base de datos. Esta clase contendrá métodos para insertar, leer, actualizar y eliminar datos.(CRUD) operaciones.

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#

Explicación

  • Parametrización: Usar @Parameter reduce el riesgo de inyección SQL.
  • connection.Open(): Abre la conexión MySQL.
  • cmd.ExecuteNonQuery(): Ejecuta la consulta de inserción.

Insertar datos en la base de datos MySQL

Para agregar datos de un nuevo empleado, llame al método 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#

Recuperación y visualización de datos

Recuperar datos y mostrarlos en la consola:

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#

Explicación

  • ExecuteReader()**: Ejecuta la consulta de selección y devuelve un objeto MySqlDataReader.
  • reader.Read(): Itera a través del conjunto de resultados, mostrando los detalles de cada empleado.

Actualización y eliminación de registros

Aquí tienes un ejemplo para actualizar el salario de un empleado:

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#

Comando de Actualización: Usa una consulta parametrizada para actualizar la columna de Salario basada en EmployeeID.

Generación de PDFs a partir de datos MySQL con IronPDF

Introducción a IronPDF

IronPDFes una biblioteca robusta que permite a los desarrolladores crear, editar y manipular documentos PDF fácilmente dentro de aplicaciones de C#. Admite una amplia gama de funcionalidades de PDF, lo que la convierte en una herramienta perfecta para aplicaciones basadas en datos que requieren generación automática de informes, manipulación de documentos o conversión de HTML a PDF. Ya sea que necesites convertir páginas web dinámicas en archivos PDF o generar PDFs personalizados desde cero, IronPDF simplifica el proceso con unas pocas líneas de código.

Características principales de IronPDF

  • Conversión de HTML a PDF: Una de las características destacadas de IronPDF es su capacidad paraconvertir HTMLcontenido en documentos PDF totalmente formateados. Esta función es particularmente útil para generar informes a partir de contenido web dinámico o al trabajar con datos almacenados en formato web.
  • Edición de PDFs: IronPDF permite editar PDFs existentes, incluyendo la adición, eliminación y modificación de contenido, como texto, imágenes, tablas y más. Esto es ideal para aplicaciones que necesitan procesar o actualizar documentos preexistentes.
  • Fusión y división de PDF: Con IronPDF, puedes fácilmentefusionar múltiples PDFsen un solo documento odividirun PDF grande en archivos más pequeños. Esta función es útil para organizar y gestionar grandes colecciones de documentos.
  • Estilo y personalización: Al generar PDFs a partir de HTML, puedes usar CSS para estilizar el documento y lograr un diseño personalizado que coincida con el diseño de tu aplicación. IronPDF le ofrece control total sobre la apariencia de sus PDFs, asegurando que cumplan con sus requisitos específicos.

Configuración de IronPDF en tu proyecto C

Para utilizarIronPDF, instálalo a través del Administrador de paquetes NuGet en Visual Studio:

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

Convertir datos de MySQL a formato PDF

A continuación se muestra un ejemplo completo de código que muestra cómo crear un informe PDF con datos de empleados:

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#

Salida de Consola:

Conexión C# MySQL (Cómo Funciona para Desarrolladores): Figura 4

Salida PDF

Conexión a MySQL en C# (Cómo funciona para desarrolladores): Figura 5

Desglose del código

  1. Conexión a la base de datos MySQL:

    • La conexión define el servidor MySQL, la base de datos, el usuario y la contraseña.
    • Te conectas usando MySqlConnection y gestionas operaciones CRUD con MySqlCommand.
  2. Operación de Inserción(InsertEmployee):**

    • Utiliza MySqlCommand con consultas parametrizadas(@FirstName, @LastName, etc.)para prevenir la inyección SQL.
    • Después de abrir la conexión(connection.Open()), ExecuteNonQuery()ejecuta la sentencia SQL INSERT.
  3. Operación de Lectura(GetEmployees):

    • Ejecuta una consulta SELECT * para obtener todos los registros de empleados.
    • Utiliza un MySqlDataReader para iterar sobre el conjunto de resultados y mostrar cada registro en la consola.
  4. Operación de actualización(ActualizarSalarioEmpleado):**

    • El método acepta un employeeId y un newSalary para actualizar el salario del empleado.
    • Utiliza una consulta SQL UPDATE parametrizada.
  5. Generación de PDF(GenerarInformeEmpleadosPDF):

    • Recopila datos de empleados en una cadena HTML con una estructura de tabla simple.

    • El contenido HTML se pasa al método HtmlToPdf.StaticRenderHtmlAsPdf de IronPDF para generar un informe PDF.
    • El PDF resultante se guarda como EmployeeReport.pdf.

Conclusión

En este artículo, repasamos los pasos esenciales para integrar MySQL con una aplicación C#. Desde la configuración de la base de datos y la realización de operaciones CRUD hasta la generación de PDFs con IronPDF, cubrimos una amplia gama de temas fundamentales que son cruciales para construir aplicaciones impulsadas por datos. Aquí tienes un resumen de los conceptos principales:

  • Integración de MySQL y C#: Demostramos cómo conectarse a una base de datos MySQL utilizando la biblioteca MySql.Data, gestionar conexiones a la base de datos y realizar operaciones CRUD utilizando consultas parametrizadas. Esto garantiza que los datos puedan ser almacenados, actualizados y recuperados de manera eficiente, segura y organizada.
  • Realización de operaciones CRUD: Con los métodos de ejemplo para insertar, actualizar y leer datos de empleados, puedes extender esta lógica para gestionar otros tipos de registros en una base de datos del mundo real. El uso de consultas parametrizadas también ayuda a mitigar los ataques de inyección de SQL, garantizando la seguridad de su aplicación.
  • IronPDF para la Generación de PDF: IronPDF facilita la generación de PDFs con apariencia profesional a partir de contenido HTML dinámico. Al convertir los datos recuperados de MySQL en una tabla HTML, podemos crear informes personalizados y guardarlos como PDFs, lo cual puede ser útil para generar facturas, informes, resúmenes y más. La API sencilla de IronPDF lo convierte en una excelente herramienta para cualquier desarrollador de C# que necesite gestionar la generación de PDF dentro de sus aplicaciones.

    Al combinar C# y MySQL, los desarrolladores pueden crear aplicaciones robustas que almacenan y gestionan datos, al mismo tiempo que ofrecen funcionalidades avanzadas como informes en PDF. Estas capacidades son útiles en diversas industrias, desde las finanzas hasta la salud, donde la gestión y el reporte de datos precisos son fundamentales.

    Para los desarrolladores que buscan incorporar la generación de PDF en sus aplicaciones C#,IronPDFque le permite probar todo el conjunto de características. Ya sea que necesite generar documentos simples o informes sofisticados, IronPDF puede ser una herramienta invaluable para automatizar la creación de PDF dentro de su flujo de trabajo.

< ANTERIOR
Parseint C# (Cómo funciona para desarrolladores)
SIGUIENTE >
Tuplas Nombradas en C# (Cómo Funciona para Desarrolladores)