Passer au contenu du pied de page
.NET AIDE

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

Bienvenue dans ce didacticiel conçu pour les débutants intéressés par l'intégration des applications C# avec PostgreSQL. PostgreSQL est l'un des systèmes de gestion de bases de données relationnelles les plus utilisés dans le monde, connu pour sa fiabilité et sa compatibilité avec une vaste gamme d'environnements de programmation, y compris C#. Ce guide vous guidera à travers les bases de la connexion d'une application C# à une base de données PostgreSQL, l'exécution de requêtes de déclaration SQL et la gestion des données. Nous utiliserons des outils comme Visual Studio, NuGet Package Manager, et le fournisseur de données Npgsql pour créer un projet simple qui communique avec un serveur PostgreSQL. Nous apprendrons également la bibliothèque IronPDF avec l'intégration de PostgreSQL.

Configuration de votre environnement

Avant de plonger dans le codage, assurez-vous d'avoir Visual Studio installé sur votre ordinateur. Visual Studio est un environnement de développement intégré (IDE) populaire qui prend en charge C# ainsi que d'autres langages de programmation. Pour la gestion de bases de données, installez PostgreSQL sur votre machine locale ou configurez une base de données PostgreSQL dans un environnement cloud comme Azure Database.

Après avoir configuré Visual Studio et votre serveur PostgreSQL, créez un nouveau projet C#. Vous pouvez le faire en ouvrant Visual Studio, en allant dans le menu Fichier, en sélectionnant Nouveau, puis Projet. Choisissez une application console (.NET Core) comme type de projet pour garder les choses simples.

Intégration de PostgreSQL avec C#

Pour connecter votre application C# à une base de données PostgreSQL, vous avez besoin du fournisseur de données Npgsql. Npgsql agit comme un pont entre les applications C# et les bases de données PostgreSQL, permettant à votre code d'exécuter des commandes SQL et de gérer les données.

Installation de Npgsql

Ouvrez votre projet nouvellement créé dans Visual Studio. Cliquez avec le bouton droit sur votre projet dans l'Explorateur de solutions, sélectionnez "Gérer les packages NuGet" et recherchez le package Npgsql. Installez-le en cliquant sur le bouton d'installation à côté du nom du package. Cette action ajoute le fournisseur de données Npgsql à votre projet, permettant à votre application de communiquer avec PostgreSQL. Vous pouvez également l'installer à l'aide de la console du gestionnaire de packages.

C# PostgreSQL (Comment ça fonctionne pour les développeurs) : Figure 1 - Npgsql

Configuration de la connexion à la base de données

La première étape pour interagir avec une base de données PostgreSQL depuis C# est d'établir une connexion. Cela nécessite une chaîne de connexion, qui inclut des détails tels que le nom du serveur, le port, le nom d'utilisateur et le mot de passe. Voici un modèle de base pour une chaîne de connexion 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";
Dim connectionString As String = "Host=localhost; Port=5432; Username=postgres; Password=yourpassword; Database=mydatabase"
$vbLabelText   $csharpLabel

Remplacez localhost, votremotdepasse et mabase par les détails de votre serveur PostgreSQL.

Définir le modèle d'employé

Nous définissons un modèle d'entité Employé qui représentera nos données dans la base de données PostgreSQL. Ce modèle inclut des propriétés qui correspondent aux colonnes de la table de la base de données.

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; }
}
Public Class Employee
	Public Property Id() As Integer ' -  Automatically becomes the primary key
	Public Property LastName() As String
End Class
$vbLabelText   $csharpLabel

Cet extrait de code définit une simple classe Employé avec deux propriétés : Id et NomDeFamille. Entity Framework Core utilise des conventions pour déduire que la propriété clé primaire sérialisée Id doit être traitée comme la clé primaire.

Configurer le DbContext de l'application

La classe AppDbContext étend DbContext d'Entity Framework Core, agissant comme un pont entre votre application C# et la base de données PostgreSQL. Elle inclut des détails de configuration tels que la chaîne de connexion et les propriétés DbSet qui représentent les tables de la base de données.

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");
    }
}
Public Class AppDbContext
	Inherits DbContext

	Public Property Employees() As DbSet(Of Employee) ' -  Represents the Employees table

	Protected Overrides Sub OnConfiguring(ByVal optionsBuilder As DbContextOptionsBuilder)
		Dim connectionString As String = "Host=localhost; Port=5432; Username=postgres; Password=your_password; Database=your_database"
		optionsBuilder.UseNpgsql(connectionString)
	End Sub

	Protected Overrides Sub OnModelCreating(ByVal modelBuilder As ModelBuilder)
		modelBuilder.Entity(Of Employee)().ToTable("Employees")
	End Sub
End Class
$vbLabelText   $csharpLabel
  • Propriété DbSet: public DbSet Employees { get; set; } déclare un ensemble d'entités Employee qui sont mappées à la table des employés dans la base de données PostgreSQL.

  • Méthode OnConfiguring : Cette méthode configure le DbContext avec la chaîne de connexion de base de données nécessaire. Remplacez votremotdepasse et votrebasededonnees par vos vrais détails de serveur PostgreSQL.

  • Méthode OnModelCreating : Ici, vous pouvez utiliser l'API Fluent pour configurer davantage les comportements des entités. Dans cet exemple, nous spécifions explicitement le nom de la table, bien que cela soit facultatif si le nom de la table correspond au nom de la propriété DbSet.

Logique principale du programme

Dans la méthode Main de la classe Program, nous nous assurons que la base de données est créée, que des données initiales soient insérées si elle est vide, puis nous effectuons une requête pour récupérer et afficher les données des employés.

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}");
            }
        }
    }
}
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Using context = New AppDbContext()
			context.Database.EnsureCreated() ' Ensure the database and schema are created
			If Not context.Employees.Any() Then ' Check if the Employees table is empty
				context.Employees.Add(New Employee With {.LastName = "Software"})
				context.SaveChanges() ' Save changes to the database
			End If
			Dim employees = context.Employees.Where(Function(e) e.LastName = "Software").ToList()
			For Each employee In employees
				Console.WriteLine($"Employee ID: {employee.Id}, Last Name: {employee.LastName}")
			Next employee
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

Le code ci-dessus vérifie si la base de données existe et la crée avec le schéma si ce n'est pas le cas. C'est un moyen simple de démarrer rapidement une nouvelle base de données pendant le développement. Cette déclaration SQL vérifie, que si la table Employees est vide, le programme ajoute un nouvel Employé avec le nom de famille "Software" et enregistre les modifications dans la base de données. Le programme interroge la table Employees pour obtenir les entrées avec le nom de famille "Software" et affiche leurs détails sur la console.

Sortie

Voici la sortie du terminal lorsque vous exécutez le programme :

C# PostgreSQL (Comment ça fonctionne pour les développeurs) : Figure 2 - Sortie

Et c'est les données des tables dans PgAdmin :

C# PostgreSQL (Comment ça fonctionne pour les développeurs) : Figure 3 - Sortie de la table

Introduction à IronPDF

Explorez les capacités de la bibliothèque IronPDF pour comprendre comment cette bibliothèque complète pour C# permet aux développeurs de créer, éditer et manipuler des documents PDF dans les applications .NET. Cet outil puissant simplifie la génération de PDF à partir de HTML, d'URL et d'images. Il offre également des opérations PDF essentielles telles que l'édition de texte, d'images et l'ajout de fonctionnalités de sécurité comme le chiffrement et les signatures numériques. IronPDF se distingue par sa facilité d'utilisation, permettant aux développeurs de mettre en œuvre des fonctionnalités PDF complexes avec un code minimal.

IronPDF offre la possibilité de convertir facilement HTML en PDF, tout en conservant les mises en page et les styles inchangés. Cette fonctionnalité est parfaite pour générer des PDF à partir de contenu web comme des rapports, des factures et de la documentation. Il convertit des fichiers HTML, des URL, et des chaînes HTML en fichiers 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");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

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

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

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

L'intégration d'IronPDF avec une base de données PostgreSQL peut être incroyablement utile dans des scénarios où vous devez générer des rapports ou des documents PDF basés sur des données dynamiques stockées dans votre base de données. Cela peut aller de la génération de factures, de rapports, de relevés de clients et plus, directement à partir des données persistées dans une base de données PostgreSQL.

Installer IronPDF

Avant de pouvoir utiliser IronPDF, vous devez l'ajouter à votre projet. Cela se fait facilement via le NuGet Package Manager :

Install-Package IronPdf

Générer un PDF à partir des données PostgreSQL

Dans cet exemple, générons un simple rapport PDF qui liste les employés de notre base de données PostgreSQL. Nous supposerons que vous avez configuré le AppDbContext et le modèle Employee comme décrit dans les sections précédentes.

Tout d'abord, assurez-vous d'avoir installé la bibliothèque IronPDF dans votre projet. Ensuite, vous pouvez utiliser le code suivant pour récupérer les données de la base de données PostgreSQL et générer un rapport 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}");
        }
    }
}
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		IronPdf.License.LicenseKey = "Key"
		' Initialize the database context
		Using context = New AppDbContext()
			' Fetch employees from the database
			Dim employees = context.Employees.ToList()
			' Generate HTML content for the PDF
			Dim htmlContent = "<h1>Employee Report</h1>"
			htmlContent &= "<table><tr><th>ID</th><th>Last Name</th></tr>"
			For Each employee In employees
				htmlContent &= $"<tr><td>{employee.Id}</td><td>{employee.LastName}</td></tr>"
			Next employee
			htmlContent &= "</table>"
			' Instantiate the IronPDF HtmlToPdf converter
			Dim renderer = New ChromePdfRenderer()
			' Generate the PDF document from the HTML content
			Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
			' Save the generated PDF to a file
			Dim outputPath = "f:\EmployeeReport.pdf"
			pdf.SaveAs(outputPath)
			Console.WriteLine($"PDF report generated: {outputPath}")
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

Sortie

Lorsque vous exécutez le code, cette sortie console s'affichera :

C# PostgreSQL (Comment ça fonctionne pour les développeurs) : Figure 4 - Sortie de la console

Ce PDF est généré :

C# PostgreSQL (Comment ça fonctionne pour les développeurs) : Figure 5 - Sortie du PDF

Conclusion

Vous venez de faire un premier pas important dans le monde de la gestion de bases de données avec C# et PostgreSQL. En suivant les instructions de ce didacticiel, vous avez appris à configurer un projet dans Visual Studio, à installer les packages nécessaires et à exécuter des opérations de base de données de base. Au fur et à mesure que vous vous familiariserez avec ces concepts, vous découvrirez la puissance et la flexibilité de la combinaison de C# avec l'un des systèmes de bases de données relationnelles les plus importants. Continuez à expérimenter avec différentes requêtes et configurations d'entités pour approfondir votre compréhension de la manière dont C# interagit avec PostgreSQL.

IronPDF propose une version d'essai gratuite des fonctionnalités d'IronPDF qui permet aux développeurs d'explorer ses caractéristiques et ses capacités sans aucun investissement initial. Cette version d'essai est particulièrement utile pour évaluer dans quelle mesure IronPDF répond aux besoins de votre projet pour la génération, l'édition et la conversion de documents PDF dans les applications .NET. Après la période d'essai ou pour une utilisation en production, l'acquisition d'une licence est nécessaire. La licence IronPDF commence à $799, offrant une gamme de fonctionnalités et d'options de support adaptées à différents besoins de développement.

Questions Fréquemment Posées

Comment connecter une application C# à une base de données PostgreSQL ?

Pour connecter une application C# à une base de données PostgreSQL, vous devez utiliser le fournisseur de données Npgsql, qui peut être installé via le Gestionnaire de Paquets NuGet dans Visual Studio. Vous aurez également besoin d'une chaîne de connexion correctement configurée qui inclut le nom du serveur, le port, le nom d'utilisateur, le mot de passe et le nom de la base de données.

Quelles étapes sont impliquées dans la configuration d'un projet C# avec PostgreSQL ?

Tout d'abord, installez Visual Studio et PostgreSQL sur votre machine. Ensuite, créez un nouveau projet C# et utilisez le Gestionnaire de Paquets NuGet pour installer le fournisseur de données Npgsql. Configurez votre chaîne de connexion et assurez-vous que votre serveur PostgreSQL est en marche.

Comment puis-je exécuter des commandes SQL dans une application C# ?

Vous pouvez exécuter des commandes SQL dans une application C# en utilisant le fournisseur de données Npgsql. Après avoir établi une connexion à la base de données PostgreSQL, vous pouvez utiliser NpgsqlCommand pour exécuter des requêtes SQL telles que SELECT, INSERT, UPDATE et DELETE.

Comment puis-je générer des rapports PDF à partir de données PostgreSQL en C# ?

IronPDF vous permet de générer des rapports PDF à partir de données PostgreSQL en C#. Vous pouvez récupérer des données de la base de données et utiliser les fonctionnalités d'IronPDF pour créer un document PDF, y compris la conversion de contenu HTML en PDF ou l'édition de PDF existants.

Quel est le but de l'utilisation du fournisseur de données Npgsql en C# ?

Le fournisseur de données Npgsql est utilisé en C# pour faciliter la communication avec les bases de données PostgreSQL. Il permet à votre application d'exécuter des requêtes SQL, de gérer des données et d'interagir avec la base de données sans accroc.

Comment puis-je créer et remplir une base de données en C# ?

En C#, vous pouvez créer une base de données en utilisant la méthode context.Database.EnsureCreated(), qui vérifie si la base de données existe et la crée si ce n'est pas le cas. Vous pouvez remplir les données initiales en ajoutant des données au contexte et en utilisant context.SaveChanges() pour les persister.

Quels sont les avantages d'utiliser IronPDF dans une application .NET ?

IronPDF est avantageux dans les applications .NET car il offre des fonctionnalités robustes pour créer, éditer et manipuler des documents PDF. Il prend en charge la conversion de HTML en PDF, l'édition de texte et d'images, et l'ajout de fonctionnalités de sécurité comme le cryptage.

Comment puis-je définir un modèle de données en C# pour une table PostgreSQL ?

Vous pouvez définir un modèle de données en C# en créant une classe qui correspond à la structure de votre table PostgreSQL. Chaque propriété dans la classe doit correspondre à une colonne dans la table, permettant à Entity Framework de mapper correctement les données.

Comment dépanner les problèmes de connexion entre C# et PostgreSQL ?

Pour dépanner les problèmes de connexion, assurez-vous que votre chaîne de connexion est correctement configurée, vérifiez que votre serveur PostgreSQL est en marche, et vérifiez s'il n'y a pas de problèmes de pare-feu ou de réseau qui pourraient bloquer la connexion.

Curtis Chau
Rédacteur technique

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

Lire la suite