Saltar al pie de página
.NET AYUDA

C# PostgreSQL (Cómo Funciona para Desarrolladores)

Bienvenido a este tutorial diseñado para principiantes interesados en integrar aplicaciones de C# con PostgreSQL. PostgreSQL es una de las bases de datos relacionales más utilizadas en el mundo, conocida por su fiabilidad y compatibilidad con una amplia gama de entornos de programación, incluyendo C#. Esta guía le guiará a través de los conceptos básicos de la conexión de una aplicación C# a una base de datos PostgreSQL, la ejecución de consultas de declaración SQL y el manejo de datos. Usaremos herramientas como Visual Studio, el Administrador de Paquetes NuGet y el proveedor de datos Npgsql para crear un proyecto sencillo que se comunique con un servidor PostgreSQL. También aprenderemos sobre la biblioteca IronPDF con la integración de PostgreSQL.

Configuración de su entorno

Antes de sumergirse en la codificación, asegúrese de tener instalado Visual Studio en su computadora. Visual Studio es un entorno de desarrollo integrado (IDE) popular que admite C# entre otros lenguajes de programación. Para la gestión de bases de datos, instale PostgreSQL en su máquina local o configure una base de datos PostgreSQL en un entorno en la nube como Azure Database.

Después de configurar Visual Studio y su servidor PostgreSQL, cree un nuevo proyecto de C#. Puede hacer esto abriendo Visual Studio, yendo al menú Archivo, seleccionando Nuevo y luego Proyecto. Elija una aplicación de consola (.NET Core) como tipo de proyecto para mantener las cosas simples.

Integración de PostgreSQL con C#

Para conectar su aplicación de C# a una base de datos PostgreSQL, necesita el proveedor de datos Npgsql. Npgsql actúa como un puente entre las aplicaciones de C# y las bases de datos PostgreSQL, permitiendo que su código ejecute comandos SQL y gestione datos.

Instalación de Npgsql

Abra su proyecto recién creado en Visual Studio. Haga clic derecho sobre su proyecto en el Explorador de Soluciones, seleccione "Administrar Paquetes NuGet" y busque el paquete Npgsql. Instálelo haciendo clic en el botón de instalación junto al nombre del paquete. Esta acción agrega el proveedor de datos Npgsql a su proyecto, permitiendo que su aplicación se comunique con PostgreSQL. También puede instalarlo usando la consola del administrador de paquetes.

C# PostgreSQL (Cómo Funciona Para Desarrolladores): Figura 1 - Npgsql

Configuración de la conexión a la base de datos

El primer paso para interactuar con una base de datos PostgreSQL desde C# es establecer una conexión. Esto requiere una cadena de conexión, que incluye detalles como el nombre del servidor, puerto, nombre de usuario y contraseña. Aquí hay una plantilla básica para una cadena de conexión PostgreSQL:

string connectionString = "Host=localhost; Port=5432; Username=postgres; Password=yourpassword; Database=mydatabase";
string connectionString = "Host=localhost; Port=5432; Username=postgres; Password=yourpassword; Database=mydatabase";
$vbLabelText   $csharpLabel

Reemplace localhost, yourpassword, y mydatabase con los detalles de su servidor PostgreSQL.

Definición del modelo de empleado

Definimos un modelo de entidad Empleado que representará nuestros datos en la base de datos PostgreSQL. Este modelo incluye propiedades que corresponden a las columnas en la tabla de la base de datos.

public class Employee
{
    public int Id { get; set; } // Automatically becomes the primary key
    public string LastName { get; set; }
}
public class Employee
{
    public int Id { get; set; } // Automatically becomes the primary key
    public string LastName { get; set; }
}
$vbLabelText   $csharpLabel

Este fragmento de código define una clase Empleado sencilla con dos propiedades: Id y Apellido. Entity Framework Core usa convenciones para inferir que la propiedad de clave principal serial Id debe tratarse como la clave principal.

Configuración del DbContext de la aplicación

La clase AppDbContext extiende DbContext de Entity Framework Core, actuando como un puente entre su aplicación C# y la base de datos PostgreSQL. Incluye detalles de configuración como la cadena de conexión y las propiedades DbSet que representan tablas en la base de datos.

public class AppDbContext : DbContext
{
    public DbSet<Employee> Employees { get; set; } // Represents the Employees table

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        string connectionString = "Host=localhost; Port=5432; Username=postgres; Password=your_password; Database=your_database";
        optionsBuilder.UseNpgsql(connectionString);
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Employee>().ToTable("Employees");
    }
}
public class AppDbContext : DbContext
{
    public DbSet<Employee> Employees { get; set; } // Represents the Employees table

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        string connectionString = "Host=localhost; Port=5432; Username=postgres; Password=your_password; Database=your_database";
        optionsBuilder.UseNpgsql(connectionString);
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Employee>().ToTable("Employees");
    }
}
$vbLabelText   $csharpLabel
  • Propiedad DbSet:** DbSet públicoEmpleados { obtener; set; } declara un conjunto de Employee** entidades que están mapeadas a la tabla de empleados en la base de datos PostgreSQL.

  • Método OnConfiguring: este método configura DbContext con la cadena de conexión de base de datos necesaria. Reemplace your_password y your_database con los detalles reales de su servidor PostgreSQL.

  • Método OnModelCreating: aquí, puede utilizar la API Fluent para configurar aún más los comportamientos de las entidades. En este ejemplo, especificamos el nombre de la tabla explícitamente, aunque es opcional si el nombre de la tabla coincide con el nombre de la propiedad DbSet.

Lógica principal del programa

En el método Main de la clase Program, aseguramos que la base de datos se cree, la rellenamos con datos iniciales si está vacía, y luego realizamos una consulta para recuperar y mostrar datos de empleados.

class Program
{
    static void Main(string[] args)
    {
        using (var context = new AppDbContext())
        {
            context.Database.EnsureCreated();  // Ensure the database and schema are created
            if (!context.Employees.Any())  // Check if the Employees table is empty
            {
                context.Employees.Add(new Employee { LastName = "Software" });
                context.SaveChanges();  // Save changes to the database
            }
            var employees = context.Employees.Where(e => e.LastName == "Software").ToList();
            foreach (var employee in employees)
            {
                Console.WriteLine($"Employee ID: {employee.Id}, Last Name: {employee.LastName}");
            }
        }
    }
}
class Program
{
    static void Main(string[] args)
    {
        using (var context = new AppDbContext())
        {
            context.Database.EnsureCreated();  // Ensure the database and schema are created
            if (!context.Employees.Any())  // Check if the Employees table is empty
            {
                context.Employees.Add(new Employee { LastName = "Software" });
                context.SaveChanges();  // Save changes to the database
            }
            var employees = context.Employees.Where(e => e.LastName == "Software").ToList();
            foreach (var employee in employees)
            {
                Console.WriteLine($"Employee ID: {employee.Id}, Last Name: {employee.LastName}");
            }
        }
    }
}
$vbLabelText   $csharpLabel

El código anterior verifica si la base de datos existe y la crea junto con el esquema si no existe. Es una forma sencilla de iniciar una nueva base de datos durante el desarrollo. Esta declaración SQL verifica que, si la tabla Employees está vacía, el programa agrega un nuevo Empleado con el apellido "Software" y guarda los cambios en la base de datos. El programa consulta la tabla Employees para las entradas con el apellido "Software" y imprime sus detalles en la consola.

Resultado

Aquí está la salida de la consola cuando ejecutas el programa:

C# PostgreSQL (Cómo Funciona Para Desarrolladores): Figura 2 - Resultado

Y estos son los datos de la tabla en PgAdmin:

C# PostgreSQL (Cómo Funciona Para Desarrolladores): Figura 3 - Salida de la Tabla

Introducción a IronPDF

Explore las capacidades de la Biblioteca IronPDF para entender cómo esta biblioteca integral para C# permite a los desarrolladores crear, editar y manipular documentos PDF dentro de aplicaciones .NET. Esta poderosa herramienta simplifica la generación de PDFs desde HTML, URL e imágenes. También proporciona operaciones PDF esenciales como la edición de texto e imágenes, y la adición de funciones de seguridad como cifrado y firmas digitales. IronPDF se destaca por su facilidad de uso, permitiendo a los desarrolladores implementar funcionalidades PDF complejas con un código mínimo.

IronPDF ofrece la capacidad de convertir HTML a PDF sin esfuerzo, manteniendo intactos los diseños y estilos. Esta función es perfecta para generar PDFs a partir de contenido basado en la web como informes, facturas y documentación. Convierte archivos HTML, URLs y cadenas HTML en archivos PDF.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
$vbLabelText   $csharpLabel

Integrar IronPDF con una base de datos PostgreSQL puede ser increíblemente útil en escenarios donde necesita generar informes o documentos PDF basados en datos dinámicos almacenados en su base de datos. Esto podría ir desde la generación de facturas, informes, estados de cuenta de clientes y más, directamente desde los datos persistidos en una base de datos PostgreSQL.

Instalación de IronPDF

Antes de poder usar IronPDF, debe agregarlo a su proyecto. Esto se hace fácilmente a través del Administrador de Paquetes NuGet:

Install-Package IronPdf

Generación de un PDF a partir de datos PostgreSQL

En este ejemplo, generaremos un informe PDF sencillo que enumera a los empleados de nuestra base de datos PostgreSQL. Asumiremos que tiene configurados el AppDbContext y el modelo Employee como se describe en las secciones anteriores.

Primero, asegúrese de tener instalada la biblioteca IronPDF en su proyecto. Luego, puede usar el siguiente código para obtener datos de la base de datos PostgreSQL y generar un informe PDF:

class Program
{
    static void Main(string[] args)
    {
        IronPdf.License.LicenseKey = "Key";
        // Initialize the database context
        using (var context = new AppDbContext())
        {
            // Fetch employees from the database
            var employees = context.Employees.ToList();
            // Generate HTML content for the PDF
            var htmlContent = "<h1>Employee Report</h1>";
            htmlContent += "<table><tr><th>ID</th><th>Last Name</th></tr>";
            foreach (var employee in employees)
            {
                htmlContent += $"<tr><td>{employee.Id}</td><td>{employee.LastName}</td></tr>";
            }
            htmlContent += "</table>";
            // Instantiate the IronPDF HtmlToPdf converter
            var renderer = new ChromePdfRenderer();
            // Generate the PDF document from the HTML content
            var pdf = renderer.RenderHtmlAsPdf(htmlContent);
            // Save the generated PDF to a file
            var outputPath = "f:\\EmployeeReport.pdf";
            pdf.SaveAs(outputPath);
            Console.WriteLine($"PDF report generated: {outputPath}");
        }
    }
}
class Program
{
    static void Main(string[] args)
    {
        IronPdf.License.LicenseKey = "Key";
        // Initialize the database context
        using (var context = new AppDbContext())
        {
            // Fetch employees from the database
            var employees = context.Employees.ToList();
            // Generate HTML content for the PDF
            var htmlContent = "<h1>Employee Report</h1>";
            htmlContent += "<table><tr><th>ID</th><th>Last Name</th></tr>";
            foreach (var employee in employees)
            {
                htmlContent += $"<tr><td>{employee.Id}</td><td>{employee.LastName}</td></tr>";
            }
            htmlContent += "</table>";
            // Instantiate the IronPDF HtmlToPdf converter
            var renderer = new ChromePdfRenderer();
            // Generate the PDF document from the HTML content
            var pdf = renderer.RenderHtmlAsPdf(htmlContent);
            // Save the generated PDF to a file
            var outputPath = "f:\\EmployeeReport.pdf";
            pdf.SaveAs(outputPath);
            Console.WriteLine($"PDF report generated: {outputPath}");
        }
    }
}
$vbLabelText   $csharpLabel

Resultado

Cuando ejecute el código, esta salida de consola mostrará:

C# PostgreSQL (Cómo Funciona Para Desarrolladores): Figura 4 - Salida de Consola

Este PDF se genera:

C# PostgreSQL (Cómo Funciona Para Desarrolladores): Figura 5 - Salida del PDF

Conclusión

Acaba de dar un paso significativo en el mundo de la gestión de bases de datos con C# y PostgreSQL. Siguiendo las instrucciones de este tutorial, ha aprendido a configurar un proyecto en Visual Studio, a instalar los paquetes necesarios y a ejecutar operaciones básicas de bases de datos. A medida que se familiarice más con estos conceptos, descubrirá el poder y la flexibilidad de combinar C# con uno de los sistemas de bases de datos relacionales más importantes. Siga experimentando con diferentes consultas y configuraciones de entidades para profundizar en su comprensión de cómo interactúa C# con PostgreSQL.

IronPDF proporciona una prueba gratuita de las funciones de IronPDF que permite a los desarrolladores explorar sus características y capacidades sin ninguna inversión inicial. Esta prueba es particularmente útil para evaluar cuán bien IronPDF cumple con los requisitos de su proyecto para generar, editar y convertir documentos PDF en aplicaciones .NET. Después del período de prueba o para uso en producción, es necesario adquirir una licencia. La concesión de licencias para IronPDF comienza en $799, ofreciendo una gama de características y opciones de soporte adecuadas para diferentes necesidades de desarrollo.

Preguntas Frecuentes

¿Cómo puedo conectar una aplicación C# a una base de datos PostgreSQL?

Para conectar una aplicación C# a una base de datos PostgreSQL, debe usar el proveedor de datos Npgsql, que se puede instalar a través del Administrador de paquetes NuGet en Visual Studio. También necesitará una cadena de conexión correctamente configurada que incluya el nombre del servidor, puerto, nombre de usuario, contraseña y nombre de la base de datos.

¿Qué pasos están involucrados en la configuración de un proyecto C# con PostgreSQL?

Primero, instale Visual Studio y PostgreSQL en su máquina. Luego, cree un nuevo proyecto C# y use el Administrador de paquetes NuGet para instalar el proveedor de datos Npgsql. Configure su cadena de conexión y asegúrese de que su servidor PostgreSQL esté funcionando.

¿Cómo puedo ejecutar comandos SQL en una aplicación C#?

Puede ejecutar comandos SQL en una aplicación C# utilizando el proveedor de datos Npgsql. Después de establecer una conexión con la base de datos PostgreSQL, puede usar NpgsqlCommand para ejecutar consultas SQL como SELECT, INSERT, UPDATE y DELETE.

¿Cómo puedo generar informes PDF a partir de datos de PostgreSQL en C#?

IronPDF le permite generar informes PDF a partir de datos de PostgreSQL en C#. Puede recuperar datos de la base de datos y usar las características de IronPDF para crear un documento PDF, incluyendo convertir contenido HTML a PDF o editar PDFs existentes.

¿Cuál es el propósito de usar el proveedor de datos Npgsql en C#?

El proveedor de datos Npgsql se usa en C# para facilitar la comunicación con bases de datos PostgreSQL. Permite a su aplicación ejecutar consultas SQL, administrar datos e interactuar con la base de datos sin problemas.

¿Cómo puedo crear y poblar una base de datos usando C#?

En C#, puede crear una base de datos usando el método context.Database.EnsureCreated(), que verifica si la base de datos existe y la crea si no. Puede poblar datos iniciales agregando datos al contexto y usando context.SaveChanges() para persistirlos.

¿Cuáles son los beneficios de usar IronPDF en una aplicación .NET?

IronPDF es beneficioso en aplicaciones .NET ya que proporciona funcionalidades robustas para crear, editar y manipular documentos PDF. Admite la conversión de HTML a PDF, la edición de texto e imágenes, y la adición de características de seguridad como el cifrado.

¿Cómo puedo definir un modelo de datos en C# para una tabla PostgreSQL?

Puede definir un modelo de datos en C# creando una clase que corresponda a la estructura de su tabla PostgreSQL. Cada propiedad de la clase debe corresponder a una columna de la tabla, permitiendo que Entity Framework asigne los datos correctamente.

¿Cómo soluciono problemas de conexión entre C# y PostgreSQL?

Para solucionar problemas de conexión, asegúrese de que su cadena de conexión esté configurada correctamente, verifique que su servidor PostgreSQL esté funcionando y revise cualquier problema de firewall o red que pueda estar bloqueando la conexión.

Jacob Mellor, Director de Tecnología @ Team Iron
Director de Tecnología

Jacob Mellor es Director de Tecnología en Iron Software y un ingeniero visionario que lidera la tecnología PDF en C#. Como el desarrollador original detrás de la base de código central de Iron Software, ha moldeado la arquitectura de productos de la compañía desde ...

Leer más