Przejdź do treści stopki
POMOC .NET

C# PostgreSQL (jak to działa dla programistów)

Witamy w tym tutorialu zaprojektowanym dla początkujących zainteresowanych integracją aplikacji C# z PostgreSQL. PostgreSQL jest jednym z najczęściej używanych relacyjnych baz danych na świecie, znanym ze swojej niezawodności i zgodności z szeroką gamą środowisk programistycznych, w tym C#. Ten przewodnik przeprowadzi Cię przez podstawy łączenia aplikacji C# z bazą danych PostgreSQL, wykonywania zapytań SQL i zarządzania danymi. Użyjemy narzędzi takich jak Visual Studio, Menedżer pakietów NuGet i dostawca danych Npgsql, aby stworzyć prosty projekt komunikujący się z serwerem PostgreSQL. Nauczymy się również o bibliotece IronPDF wraz z integracją PostgreSQL.

Konfiguracja środowiska

Przed przystąpieniem do kodowania upewnij się, że masz zainstalowane Visual Studio na swoim komputerze. Visual Studio to popularne zintegrowane środowisko programistyczne (IDE), które obsługuje C# oraz inne języki programowania. Do zarządzania bazą danych zainstaluj PostgreSQL na swojej lokalnej maszynie lub skonfiguruj bazę danych PostgreSQL w środowisku chmurowym, takim jak Azure Database.

Po skonfigurowaniu Visual Studio i serwera PostgreSQL, utwórz nowy projekt C#. Możesz to zrobić, otwierając Visual Studio, przechodząc do menu Plik, wybierając Nowy, a następnie Projekt. Wybierz aplikację konsolową (Console App) (.NET Core) jako typ projektu, aby pozostać przy prostocie.

Integracja PostgreSQL z C

Aby połączyć aplikację C# z bazą danych PostgreSQL, potrzebujesz dostawcy danych Npgsql. Npgsql działa jako pomost między aplikacjami C# a bazami danych PostgreSQL, umożliwiając Twojemu kodowi wykonywanie poleceń SQL i zarządzanie danymi.

Instalacja Npgsql

Otwórz nowo utworzony projekt w Visual Studio. Kliknij prawym przyciskiem myszy na swój projekt w Eksploratorze rozwiązań, wybierz "Zarządzaj pakietami NuGet" i wyszukaj pakiet Npgsql. Zainstaluj go, klikając przycisk instalacji obok nazwy pakietu. To działanie dodaje dostawcę danych Npgsql do Twojego projektu, umożliwiając Twojej aplikacji komunikację z PostgreSQL. Możesz go również zainstalować za pomocą konsoli menedżera pakietów.

C# PostgreSQL (Jak to działa dla deweloperów): Figura 1 - Npgsql

Konfigurowanie połączenia z bazą danych

Pierwszym krokiem w interakcji z bazą danych PostgreSQL z C# jest ustanowienie połączenia. Wymaga to ciągu połączenia, który zawiera szczegóły takie jak nazwa serwera, port, nazwa użytkownika i hasło. Oto podstawowy szablon dla ciągu połączenia 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

Zamień localhost, yourpassword i mydatabase na szczegóły swojego serwera PostgreSQL.

Definiowanie modelu Pracownika

Definiujemy model encji Employee, który będzie reprezentował nasze dane w bazie danych PostgreSQL. Ten model zawiera właściwości, które odpowiadają kolumnom w tabeli bazy danych.

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

Ten fragment kodu definiuje prostą klasę Employee z dwoma właściwościami: Id i LastName. Entity Framework Core używa konwencji do wnioskowania, że właściwość Id serial primary key powinna być traktowana jako klucz podstawowy.

Konfigurowanie DbContext aplikacji

Klasa AppDbContext rozszerza DbContext z Entity Framework Core, działając jako pomost między Twoją aplikacją C# a bazą danych PostgreSQL. Zawiera szczegóły konfiguracyjne takie jak ciąg połączenia i właściwości DbSet, które reprezentują tabele w bazie danych.

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

Właściwość DbSet: public DbSet Employees { get; set; } deklaruje zestaw* jednostek Employee*, które są mapowane do tabeli pracowników w bazie danych PostgreSQL.

  • Metoda OnConfiguring: Ta metoda konfiguruje DbContext z niezbędnym ciągiem połączenia bazy danych. Zamień your_password i your_database na swoje rzeczywiste szczegóły serwera PostgreSQL.

  • Metoda OnModelCreating: Tutaj można użyć Fluent API do dalszej konfiguracji zachowań encji. W tym przykładzie określamy nazwę tabeli jawnie, chociaż jest to opcjonalne, jeśli nazwa tabeli pasuje do nazwy właściwości DbSet.

Główna logika programu

W metodzie Main klasy Program, zapewniamy stworzenie bazy danych, zasilamy ją początkowymi danymi, jeśli jest pusta, a następnie wykonujemy zapytanie w celu pobrania i wyświetlenia danych pracowników.

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

Powyższy kod sprawdza, czy baza danych istnieje i tworzy ją wraz ze schematem, jeśli nie istnieje. To prosta metoda inicjalizacji nowej bazy danych podczas rozwoju. To polecenie SQL sprawdza, czy tabela Employees jest pusta, program dodaje nowego Employee z nazwiskiem "Software" i zapisuje zmiany w bazie danych. Program wykonuje zapytanie w tabeli Employees o wpisy z nazwiskiem "Software" i drukuje ich szczegóły na konsoli.

Wynik

Oto wynik wyświetlany w konsoli po uruchomieniu programu:

C# PostgreSQL (Jak to działa dla deweloperów): Figura 2 - Wynik

I to są dane tabeli w PgAdmin:

C# PostgreSQL (Jak to działa dla deweloperów): Figura 3 - Wynik tabeli

Wprowadzenie do IronPDF

Poznaj możliwości biblioteki IronPDF, aby zrozumieć, jak ta kompleksowa biblioteka dla C# umożliwia deweloperom tworzenie, edytowanie i manipuowanie dokumentami PDF w aplikacjach .NET. To potężne narzędzie upraszcza generowanie plików PDF z HTML, URL i obrazów. Oferuje również niezbędne operacje PDF, takie jak edycja tekstu, obrazów i dodawanie funkcji zabezpieczeń, takich jak szyfrowanie i podpisy cyfrowe. IronPDF wyróżnia się łatwością użycia, pozwalając deweloperom implementować złożone funkcje PDF przy minimalnym kodzie.

IronPDF oferuje możliwość łatwej konwersji HTML do PDF, zachowując układy i style bez zmian. Ta funkcja jest idealna do generowania plików PDF z zawartości internetowej, takie jak raporty, faktury i dokumentacja. Konwertuje pliki HTML, adresy URL i ciągi znaków HTML na pliki 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

Integracja IronPDF z bazą danych PostgreSQL może być niezwykle przydatna w sytuacjach, gdy potrzebujesz wygenerować raporty lub dokumenty PDF na podstawie dynamicznych danych przechowywanych w Twojej bazie danych. Może to obejmować generowanie faktur, raportów, zestawień klienta i innych, bezpośrednio z danych przechowywanych w bazie danych PostgreSQL.

Instalacja IronPDF

Zanim będziesz mógł użyć IronPDF, musisz dodać go do swojego projektu. To można łatwo zrobić poprzez Menedżera pakietów NuGet:

Install-Package IronPdf

Generowanie PDF z danych PostgreSQL

W tym przykładzie wygenerujmy prosty raport PDF, który wymienia pracowników z naszej bazy danych PostgreSQL. Zakładamy, że masz skonfigurowany AppDbContext i model Employee, jak opisano w poprzednich sekcjach.

Najpierw upewnij się, że masz zainstalowaną bibliotekę IronPDF w Twoim projekcie. Następnie możesz użyć następującego kodu, aby pobrać dane z bazy danych PostgreSQL i wygenerować raport 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

Wynik

Po uruchomieniu kodu, konsola wyświetli:

C# PostgreSQL (Jak to działa dla deweloperów): Figura 4 - Wyjście konsoli

Ten PDF jest generowany:

C# PostgreSQL (Jak to działa dla deweloperów): Figura 5 - Wyjście PDF

Wnioski

Właśnie zrobiłeś znaczący pierwszy krok w świat zarządzania bazami danych z C# i PostgreSQL. Postępując zgodnie z instrukcjami w tym tutorialu, nauczyłeś się, jak skonfigurować projekt w Visual Studio, zainstalować niezbędne pakiety i wykonać podstawowe operacje na bazie danych. Gdy staniesz się bardziej zaznajomiony z tymi pojęciami, odkryjesz moc i elastyczność łączenia C# z jednym z najważniejszych systemów relacyjnych baz danych. Kontynuuj eksperymenty z różnymi zapytaniami i konfiguracjami encji, aby pogłębić swoje zrozumienie jak C# współdziała z PostgreSQL.

IronPDF oferuje bezpłatny okres próbny funkcji IronPDF, który pozwala deweloperom na eksplorację jego funkcji i możliwości bez żadnej początkowej inwestycji. Ten okres próbny jest szczególnie przydatny do oceny, jak dobrze IronPDF spełnia wymagania twojego projektu dotyczące generowania, edytowania i konwertowania dokumentów PDF w aplikacjach .NET. Po okresie próbnym lub w celu produkcyjnego użycia, konieczne jest zakupienie licencji. Licencjonowanie IronPDF zaczyna się od $799, oferując szereg funkcji i opcji wsparcia odpowiednich dla różnych potrzeb rozwojowych.

Często Zadawane Pytania

Jak polaczyc aplikacje C# z baza danych PostgreSQL?

Aby polaczyc aplikacje C# z baza danych PostgreSQL, musisz uzyc dostawcy danych Npgsql, ktory mozna zainstalowac poprzez NuGet Package Manager w Visual Studio. Potrzebujesz rowniez poprawnie skonfigurowanego ciagu polaczenia zawierajacego nazwe serwera, port, nazwe uzytkownika, haslo i nazwe bazy danych.

Jakie kroki obejmuje konfigurowanie projektu C# z PostgreSQL?

Najpierw zainstaluj Visual Studio i PostgreSQL na swoim komputerze. Nastepnie utworz nowy projekt C# i uzyj NuGet Package Manager, aby zainstalowac dostawce danych Npgsql. Skonfiguruj swoj ciag polaczenia i upewnij sie, ze twoj serwer PostgreSQL jest uruchomiony.

Jak moge wykonywac polecenia SQL w aplikacji C#?

Mozesz wykonywac polecenia SQL w aplikacji C# za pomoca dostawcy danych Npgsql. Po nawiazaniu polaczenia z baza danych PostgreSQL mozna uzyc NpgsqlCommand do uruchamiania zapytan SQL, takich jak SELECT, INSERT, UPDATE i DELETE.

Jak moge generowac raporty PDF z danych PostgreSQL w C#?

IronPDF pozwala na generowanie raportow PDF z danych PostgreSQL w C#. Mozesz pobierac dane z bazy danych i korzystac z funkcji IronPDF, aby tworzyc dokumenty PDF, w tym konwertowac tresc HTML na PDF lub edytowac istniejace PDFy.

Jaki jest cel uzywania dostawcy danych Npgsql w C#?

Dostawca danych Npgsql jest uzywany w C#, aby ulatwic komunikacje z bazami danych PostgreSQL. Pozwala on na wykonywanie zapytan SQL, zarzadzanie danymi i interakcje z baza danych bez zaklocen.

Jak moge stworzyc i uzupelnic baze danych uzywajac C#?

W C# mozna stworzyc baze danych, uzywajac metody context.Database.EnsureCreated(), ktora sprawdza, czy baza danych istnieje i tworzy ja, jesli nie. Mozesz uzupelnic dane poczatkowe, dodajac dane do kontekstu i uzywajac context.SaveChanges(), aby je zapisac.

Jakie sa korzysci z uzywania IronPDF w aplikacji .NET?

IronPDF jest korzystny w aplikacjach .NET, poniewaz oferuje solidne funkcjonalnosci do tworzenia, edytowania i manipulowania dokumentami PDF. Obsluguje konwersje HTML na PDF, edytowanie tekstu i obrazow, a takze dodawanie funkcji zabezpieczajacych, takich jak szyfrowanie.

Jak moge zdefiniowac model danych w C# dla tabeli PostgreSQL?

Mozesz zdefiniowac model danych w C#, tworząc klase odpowiadajaca strukturze tabeli PostgreSQL. Kazda wlasciwosc w klasie powinna odpowiadac kolumnie w tabeli, co pozwala wlasciwie mapowac dane za pomoca Entity Framework.

Jak rozwiazywac problemy z polaczeniem miedzy C# a PostgreSQL?

Aby rozwiazywac problemy z polaczeniem, upewnij sie, ze twoj ciag polaczenia jest poprawnie skonfigurowany, zweryfikuj, czy serwer PostgreSQL dziala, i sprawdz, czy nie wystepuja jakiekolwiek problemy z firewallami lub siecia, ktore moga blokowac polaczenie.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczą...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie