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.

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"
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
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
Właściwość DbSet: public DbSet
-
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
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:

I to są dane tabeli w PgAdmin:

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
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
Wynik
Po uruchomieniu kodu, konsola wyświetli:

Ten PDF jest generowany:

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.




