Ir para o conteúdo do rodapé
AJUDA DO .NET

Conexão MySQL em C# (Como funciona para desenvolvedores)

Introdução à integração do MySQL com C

Conectar aplicativos C# a bancos de dados MySQL permite que os desenvolvedores aproveitem o poder de um banco de dados relacional para armazenar, recuperar e gerenciar dados com eficiência. Este guia fornece um processo passo a passo para integrar o MySQL com aplicativos C# e demonstra como gerar PDFs a partir dos dados do seu banco de dados MySQL usando a biblioteca IronPDF .

Pré-requisitos

Para acompanhar este guia, você precisará de:

  • Visual Studio ou qualquer IDE de C#
  • Um banco de dados MySQL (instalado e em execução)
  • A biblioteca IronPDF (para geração de PDFs)

Configurando um banco de dados MySQL

Instalando e configurando o MySQL

  1. Baixe a versão mais recente do MySQL em mysql.com .
  2. Execute o instalador e siga as instruções de configuração. Selecione "Padrão do desenvolvedor" para incluir o MySQL Server e o MySQL Workbench.
  3. Configure as credenciais do usuário root do MySQL durante a instalação e certifique-se de que o serviço MySQL esteja em execução.

Criando um banco de dados e tabelas de exemplo

  1. Abra o MySQL Workbench e conecte-se ao servidor.
  2. Crie um novo banco de dados e uma tabela de exemplo 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)
);
  1. Inserir dados de exemplo:
INSERT INTO Employees (FirstName, LastName, Position, Salary) 
VALUES ('John', 'Doe', 'Software Developer', 80000),
       ('Jane', 'Smith', 'Data Analyst', 75000);

Configurando o usuário MySQL para acesso remoto (Opcional)

Para acesso remoto, crie um usuário MySQL com as permissões necessárias:

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

Conectando C# a um banco de dados MySQL

Instalando a biblioteca MySql.Data em C

Para conectar aplicativos C# ao MySQL, usamos a biblioteca MySQL Connector/NET (frequentemente chamada apenas de Connector/NET). Este é o driver .NET oficial para MySQL, que pode ser instalado via NuGet.

  1. Abra o Visual Studio e crie um novo aplicativo de console em C#.
  2. Adicione a biblioteca MySql.Data através do Gerenciador de Pacotes NuGet :
    • Clique com o botão direito do mouse no projeto > Gerenciar Pacotes NuGet > Procurar > pesquise por MySql.Data e instale-o.

Escrevendo o código de conexão

O exemplo de código a seguir demonstra como estabelecer uma conexão com o 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

Explicação:

  • Cadeia de conexão: Contém detalhes como servidor, nome do banco de dados, ID do usuário e senha.
  • MySqlConnection: Utilizado para estabelecer a conexão.
  • Método Open(): Tenta abrir a conexão.
  • Tratamento de exceções: Capture exceções para lidar com erros de conexão de forma adequada.

Utilizando registros DNS SRV para conexão (Opcional)

Se sua aplicação estiver hospedada na nuvem ou exigir conexão com um banco de dados MySQL via registros DNS SRV, você pode substituir o nome do servidor pela entrada DNS correspondente que resolve para o endereço IP do banco de dados.

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

Agrupamento de conexões

Por padrão, o MySQL Connector/NET oferece suporte ao agrupamento de conexões, o que ajuda a gerenciar as conexões de banco de dados com mais eficiência. O agrupamento de conexões reduz a sobrecarga de abrir e fechar conexões repetidamente, reutilizando conexões existentes de um conjunto.

Se você deseja personalizar o comportamento do pool de conexões, pode ajustar sua string de conexão desta forma:

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

Como lidar com erros comuns

Problemas comuns incluem strings de conexão incorretas, restrições de firewall ou o serviço MySQL não estar em execução. Certifique-se de que todos os detalhes de configuração estejam corretos e que o serviço MySQL esteja ativo.

Executando operações CRUD com C# e MySQL

Criando uma classe C# para operações de banco de dados

Para organizar o código, crie uma classe DatabaseHelper para lidar com todas as operações de banco de dados. Esta classe conterá métodos para operações de Inserção, Leitura, Atualização e Exclusão de dados (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

Explicação:

  • Parametrização: O uso de @Parameter reduz o risco de injeção de SQL.
  • connection.Open(): Abre a conexão MySQL.
  • cmd.ExecuteNonQuery(): Executa a consulta de inserção.

Inserindo dados em um banco de dados MySQL

Para adicionar novos dados de funcionários, chame o 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)
$vbLabelText   $csharpLabel

Recuperação e exibição de dados

Recupere os dados e exiba-os no 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

Explicação:

  • ExecuteReader(): Executa a consulta select e retorna um objeto MySqlDataReader.
  • reader.Read(): Itera pelo conjunto de resultados, exibindo os detalhes de cada funcionário.

Atualização e exclusão de registros

Aqui está um exemplo de como atualizar o salário de um funcionário:

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

Comando de atualização: Utiliza uma consulta parametrizada para atualizar a coluna Salário com base no ID do funcionário.

Gerando PDFs a partir de dados MySQL com IronPDF

Introdução ao IronPDF

IronPDF é uma biblioteca robusta que permite aos desenvolvedores criar, editar e manipular documentos PDF facilmente em aplicações C#. Ele oferece suporte a uma ampla gama de funcionalidades de PDF, tornando-se uma ferramenta perfeita para aplicações orientadas a dados que exigem geração automatizada de relatórios, manipulação de documentos ou conversão de HTML para PDF. Seja para converter páginas web dinâmicas em arquivos PDF ou gerar PDFs personalizados do zero, o IronPDF simplifica o processo com poucas linhas de código.

Principais características do IronPDF

  • Conversão de HTML para PDF: Uma das funcionalidades de destaque do IronPDF é a sua capacidade de converter conteúdo HTML em documentos PDF totalmente formatados. Essa funcionalidade é particularmente útil para gerar relatórios a partir de conteúdo web dinâmico ou ao trabalhar com dados armazenados em formato web.
  • Edição de PDFs: O IronPDF permite editar PDFs existentes, incluindo adicionar, remover e modificar conteúdo, como texto, imagens, tabelas e muito mais. Isso é ideal para aplicações que precisam processar ou atualizar documentos preexistentes.
  • Fusão e divisão de PDFs: Com o IronPDF, você pode facilmente mesclar vários PDFs em um único documento ou dividir um PDF grande em arquivos menores. Essa funcionalidade é útil para organizar e gerenciar grandes coleções de documentos.
  • Estilização e personalização: Ao gerar PDFs a partir de HTML, você pode usar CSS para estilizar o documento e obter um layout personalizado que corresponda ao design do seu aplicativo. O IronPDF oferece controle total sobre a aparência dos seus PDFs, garantindo que eles atendam às suas necessidades específicas.

Configurando o IronPDF em seu projeto C

Para usar o IronPDF , instale-o através do Gerenciador de Pacotes NuGet no Visual Studio:

Install-Package IronPdf

Converter dados MySQL para formato PDF

Aqui está o exemplo de código completo que mostra como criar um relatório em PDF com dados de funcionários:

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

Análise detalhada do código

  1. Conexão com o banco de dados MySQL:

    • O connectionString define o servidor MySQL, o banco de dados, o usuário e a senha.
    • Você se conecta usando MySqlConnection e lida com operações CRUD com MySqlCommand.
  2. Operação de Inserção (InsertEmployee):

    • Usa MySqlCommand com consultas parametrizadas (@FirstName, @LastName, etc.) para evitar injeção de SQL.
    • Após abrir a conexão (connection.Open()), ExecuteNonQuery() executa a instrução SQL INSERT.
  3. Operação de leitura (GetEmployees):

    • Executa uma consulta SELECT * para buscar todos os registros de funcionários.
    • Utiliza um MySqlDataReader para iterar sobre o conjunto de resultados e exibir cada registro no console.
  4. Operação de atualização (UpdateEmployeeSalary):

    • O método aceita um employeeId e um newSalary para atualizar o salário do funcionário.
    • Utiliza uma consulta SQL UPDATE parametrizada.
  5. Geração de PDF (GenerateEmployeeReportPDF):
    • Reúne dados de funcionários em uma string HTML com uma estrutura de tabela simples.
    • O conteúdo HTML é passado para o método RenderHtmlAsPdf do IronPDF para gerar um relatório em PDF.
    • O PDF resultante é salvo como EmployeeReport.pdf.

Conclusão

Neste artigo, abordamos os passos essenciais para integrar o MySQL a uma aplicação C#. Desde a configuração do banco de dados e a execução de operações CRUD até a geração de PDFs com o IronPDF, abordamos uma ampla gama de tópicos fundamentais que são cruciais para a criação de aplicativos orientados a dados. Segue um resumo dos principais conceitos:

  • Integração MySQL e C#: Demonstramos como conectar-se a um banco de dados MySQL usando a biblioteca MySql.Data, gerenciar conexões de banco de dados e executar operações CRUD usando consultas parametrizadas. Isso garante que os dados possam ser armazenados, atualizados e recuperados de forma eficiente, segura e organizada.
  • Executando operações CRUD: Com os métodos de exemplo para inserir, atualizar e ler dados de funcionários, você pode estender essa lógica para gerenciar outros tipos de registros em um banco de dados real. O uso de consultas parametrizadas também ajuda a mitigar ataques de injeção de SQL, garantindo a segurança da sua aplicação.
  • IronPDF para geração de PDFs: O IronPDF facilita a geração de PDFs com aparência profissional a partir de conteúdo HTML dinâmico. Ao converter os dados recuperados do MySQL em uma tabela HTML, podemos criar relatórios personalizados e salvá-los como PDFs, o que pode ser útil para gerar faturas, relatórios, resumos e muito mais. A API intuitiva do IronPDF o torna uma excelente ferramenta para qualquer desenvolvedor C# que precise lidar com a geração de PDFs em seus aplicativos.

Ao combinar C# e MySQL, os desenvolvedores podem criar aplicativos robustos que armazenam e gerenciam dados, oferecendo funcionalidades avançadas como geração de relatórios em PDF. Essas funcionalidades são úteis em diversos setores, desde finanças até saúde, onde o gerenciamento e a geração de relatórios de dados precisos são essenciais.

Para desenvolvedores que desejam incorporar a geração de PDFs em seus aplicativos C#, o IronPDF permite testar o conjunto completo de recursos. Seja para gerar documentos simples ou relatórios complexos, o IronPDF pode ser uma ferramenta indispensável para automatizar a criação de PDFs em seu fluxo de trabalho.

Perguntas frequentes

Quais são os pré-requisitos para integrar o MySQL com aplicações C#?

Para integrar o MySQL com aplicativos C#, você precisa de uma IDE como o Visual Studio, um banco de dados MySQL em execução e o IronPDF para gerar PDFs a partir do conteúdo do banco de dados.

Como posso converter dados do MySQL em um PDF usando C#?

Você pode converter dados do MySQL em PDF transformando primeiro os dados em uma string HTML e, em seguida, usando o método RenderHtmlAsPdf do IronPDF para gerar um documento PDF.

Como faço para instalar e configurar o MySQL para uso com C#?

Instale o MySQL baixando-o do site mysql.com, execute o instalador e siga as instruções de configuração. Escolha a opção "Padrão do Desenvolvedor" para incluir o MySQL Server e o Workbench e configure as credenciais do usuário root.

Qual biblioteca é recomendada para conectividade entre C# e banco de dados MySQL?

A biblioteca MySQL Connector/NET é recomendada para estabelecer conectividade entre aplicações C# e um banco de dados MySQL. Ela permite o uso de strings de conexão para facilitar a comunicação.

Como posso proteger minhas consultas SQL ao usar C# com MySQL?

Para proteger as consultas SQL, utilize consultas parametrizadas, que ajudam a prevenir ataques de injeção de SQL, garantindo a validação adequada da entrada.

O que é o pool de conexões no contexto do MySQL e C#?

O agrupamento de conexões refere-se à prática de reutilizar conexões de banco de dados a partir de um conjunto, o que aumenta a eficiência ao reduzir a sobrecarga associada à abertura e ao fechamento repetidos de conexões.

Como posso criar um banco de dados e uma tabela de exemplo no MySQL para integração com C#?

Abra o MySQL Workbench, conecte-se ao seu servidor e use comandos SQL como CREATE DATABASE SampleDB; e CREATE TABLE Employees (...); para configurar um banco de dados e uma tabela de exemplo.

Que funcionalidades devo procurar numa biblioteca PDF para aplicações C#?

Uma biblioteca robusta de PDF para C# deve oferecer recursos como conversão de HTML para PDF, edição de PDF, mesclagem e divisão, além da capacidade de aplicar estilos personalizados usando CSS, como os fornecidos pelo IronPDF.

Como posso realizar operações CRUD em um banco de dados MySQL usando C#?

Implemente operações CRUD criando uma classe auxiliar em C# que utilize comandos SQL parametrizados dentro de métodos para inserir, ler, atualizar e excluir dados no banco de dados MySQL.

Como posso atualizar os dados de um funcionário em um banco de dados MySQL usando C#?

Atualize os dados de um funcionário escrevendo um método em C# que utilize um comando SQL UPDATE parametrizado, permitindo modificações como atualizações de salário com base no ID do funcionário.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim