C# PostgreSQL (Geliştiriciler için Nasıl Çalışır)
C# uygulamalarını PostgreSQL ile entegre etmekle ilgilenen acemiler için tasarlanmış bu öğreticiye hoş geldiniz. PostgreSQL, dünya genelinde en çok kullanılan ilişkisel veritabanlarından biridir ve güvenilirliği ile C# dahil geniş bir programlama ortamı ile uyumluluğu ile bilinir. Bu kılavuz, bir C# uygulamasını bir PostgreSQL veritabanına bağlama, SQL deyim sorgularını çalıştırma ve veri yönetiminin temel noktalarında size yol gösterecek. Visual Studio, NuGet Paket Yöneticisi ve Npgsql veri sağlayıcısı gibi araçları kullanarak, bir PostgreSQL sunucusuyla iletişim kuran basit bir proje oluşturacağız. PostgreSQL entegrasyonu ile IronPDF kütüphanesini de öğreneceğiz.
Çevrenizi Kurma
Kodlamaya dalmadan önce, bilgisayarınıza Visual Studio'nun kurulu olduğundan emin olun. Visual Studio, C# dahil olmak üzere diğer programlama dillerini destekleyen popüler bir entegre geliştirme ortamıdır (IDE). Veritabanı yönetimi için, yerel makinenize PostgreSQL yükleyin veya Azure Veri Tabanı gibi bir bulut ortamında bir PostgreSQL veritabanı kurun.
Visual Studio ve PostgreSQL sunucunu kurduktan sonra yeni bir C# projesi oluştur. Bunu Visual Studio'yu açarak, Dosya menüsüne giderek, Yeni ve ardından Proje'yi seçerek yapabilirsiniz. İşleri basit tutmak için projeniz için bir Konsol Uygulaması (.NET Core) seçin.
Integrating PostgreSQL with C
C# uygulamanızı bir PostgreSQL veritabanına bağlamak için Npgsql veri sağlayıcısına ihtiyacınız var. Npgsql, kodunuzun SQL komutları yürütmesine ve verileri yönetmesine olanak tanıyan C# uygulamaları ve PostgreSQL veritabanları arasında bir köprü olarak hareket eder.
Npgsql Kurulumu
Yeni oluşturduğunuz projeyi Visual Studio'da açın. Solution Explorer'da projenize sağ tıklayın, 'NuGet Paketlerini Yönet'i seçin ve Npgsql paketini arayın. Paket isminin yanındaki yükle düğmesine tıklayarak yükleyin. Bu işlem Npgsql veri sağlayıcısını projenize ekler, böylece uygulamanız PostgreSQL ile iletişim kurabilir. Bunu paket yöneticisi konsolu kullanarak da yükleyebilirsiniz.

Veritabanı Bağlantısını Yapılandırma
C#'dan bir PostgreSQL veritabanıyla etkileşime girmenin ilk adımı bir bağlantı kurmaktır. Bu, sunucu adı, port, kullanıcı adı ve şifre gibi bilgileri içeren bir bağlantı dizesi gerektirir. İşte temel bir PostgreSQL bağlantı dizesi şablonu:
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"
localhost, yourpassword ve mydatabase'i PostgreSQL sunucunuzun bilgileriyle değiştirin.
Çalışan Modelini Tanımlama
Employee varlık modelini PostgreSQL veritabanındaki verilerimizi temsil edecek şekilde tanımlarız. Bu model, veritabanı tablosundaki sütunlara karşılık gelen özellikleri içerir.
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
Bu kod parçacığı, Id ve LastName adlı iki özelliğe sahip basit bir Employee sınıfını tanımlar. Entity Framework Core, Id sıralı birincil anahtar özelliğinin birincil anahtar olarak ele alınması gerektiğini çıkarım yapmak için kuralları kullanır.
Uygulamanın DbContext'ini Yapılandırma
AppDbContext sınıfı Entity Framework Core'dan DbContexti genişletir, C# uygulamanız ile PostgreSQL veritabanı arasında köprü görevi görür. Bu, bağlantı dizesi gibi yapılandırma ayrıntılarını ve veritabanındaki tabloları temsil eden DbSet özelliklerini içerir.
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
-
DbSet Özelliği: public DbSet
Employees { get; set; } ** PostgreSQL veritabanında personel tablosuyla eşlenmiş **Employee varlıklarından oluşan bir küme ilan eder. -
OnConfiguring Metodu: Bu metod, gerekli veritabanı bağlantı dizesi ile DbContexti yapılandırır. your_password ve your_database'i gerçek PostgreSQL sunucu bilgilerinizle değiştirin.
- OnModelCreating Metodu: Burada, varlık davranışlarını daha fazla yapılandırmak için Fluent API'yi kullanabilirsiniz. Bu örnekte, tablo adını açıkça belirtiriz, ancak tablonun adı DbSet özelliği adıyla eşleşirse isteğe bağlıdır.
Ana Program Mantığı
Program sınıfının Main metodunda, veritabanının oluşturulduğundan emin olur, boşsa başlangıç verileriyle doldurur ve ardından çalışan verilerini almak ve görüntülemek için bir sorgu çalıştırırız.
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
Yukarıdaki kod, veritabanının var olup olmadığını kontrol eder ve yoksa şemayla birlikte oluşturur. Geliştirme sırasında yeni bir veritabanı başlatmanın basit bir yoludur. Bu SQL ifadesi, Çalışanlar tablosunun boş olup olmadığını kontrol eder, program soyadı 'Yazılım' olan yeni bir Çalışan ekler ve değişiklikleri veritabanına kaydeder. Program, 'Software' soyadına sahip olan çalışanların girişlerini Employees tablosuna sorgular ve ayrıntılarını konsola yazdırır.
Çıktı
Programı çalıştırdığınızda konsoldaki çıktı:

Ve bu, PgAdmin'deki tablo verisidir:

IronPDF'ye Giriş
IronPDF Kütüphanesinin Kapasitelerini Keşfedin ve bu kapsamlı C# kütüphanesinin geliştiricilerin .NET uygulamaları içinde PDF belgeleri oluşturmasını, düzenlemesini ve manipüle etmesini nasıl sağladığını anlayın. Bu güçlü araç, HTML'den, URL'lerden ve resimlerden PDF oluşturmayı basitleştirir. Ayrıca metin ve resim düzenleme ve şifreleme ve dijital imzalar gibi güvenlik özellikleri ekleme gibi temel PDF işlemlerini sağlar. IronPDF, kullanımı kolay olmasıyla öne çıkar, geliştiricilerin, en az kod kullanarak karmaşık PDF işlevselliklerini uygulamalarını sağlar.
IronPDF, HTML'nin kolayca PDF'e dönüştürülmesini sağlayarak yerleşim ve stilleri değiştirmeden tutar. Bu özellik, raporlar, faturalar ve belgeler gibi web tabanlı içeriklerden PDF oluşturmak için mükemmeldir. HTML dosyalarını, URL'leri ve HTML dizgilerini PDF dosyalarına dönüştürür.
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
IronPDF'i bir PostgreSQL veritabanı ile entegre etmek, veritabanınızda depolanan dinamik verilere dayalı olarak PDF raporları veya belgeleri oluşturmanız gereken senaryolarda inanılmaz derecede faydalı olabilir. Bu, bir PostgreSQL veritabanında kalıcı hale getirilen verilerden doğrudan fatura, rapor, müşteri bildirimi ve daha fazlasını oluşturmaktan kaynaklanabilir.
Installing IronPDF
IronPDF'i kullanmadan önce, onu projenize eklemeniz gerekir. Bunu NuGet Paket Yöneticisi aracılığıyla kolayca yapabilirsiniz:
Install-Package IronPdf
PostgreSQL Verilerinden PDF Oluşturma
Bu örnekte, PostgreSQL veritabanımızdan çalışanları listeleyen basit bir PDF raporu oluşturalım. Önceki bölümlerde açıklandığı gibi AppDbContext ve Employee modelinin kurulu olduğunu varsayacağız.
Öncelikle projenizde IronPDF kütüphanesinin kurulu olduğundan emin olun. Sonra, PostgreSQL veritabanından veri çekmek ve bir PDF raporu oluşturmak için aşağıdaki kodu kullanabilirsiniz:
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
Çıktı
Kodu çalıştırdığınızda, bu konsol çıktısı gösterilecektir:

Bu PDF oluşturuldu:

Sonuç
C# ve PostgreSQL ile veri tabanı yönetimi dünyasına önemli bir ilk adım attınız. Bu öğreticideki talimatları takip ederek, Visual Studio'da bir proje kurmayı, gerekli paketleri yüklemeyi ve temel veri tabanı işlemlerini gerçekleştirmeyi öğrendiniz. Bu kavramlarla daha aşina oldukça, C# ile en önemli ilişkisel veri tabanı sistemlerinden birini birleştirmenin gücünü ve esnekliğini keşfedeceksiniz. C#'ın PostgreSQL ile nasıl etkileşimde bulunduğunu daha iyi anlamak için farklı sorgular ve varlık yapılandırmaları ile denemeler yapmaya devam edin.
IronPDF, geliştiricilerin özelliklerini ve yeteneklerini başlangıçta herhangi bir yatırım yapmadan keşfetmelerine olanak tanıyan IronPDF özelliklerinin ücretsiz bir denemesi sunar. Bu deneme, özellikle .NET uygulamalarında PDF belgelerini oluşturma, düzenleme ve dönüştürmeye yönelik projelerinizin gerekliliklerini IronPDF'in ne kadar iyi karşıladığını değerlendirmek için faydalıdır. Deneme süresinden sonra veya üretim kullanımı için bir lisans edinmek gereklidir. IronPDF için lisanslama $999 başlar, ve farklı geliştirme ihtiyaçlarına uygun çeşitli özellikler ve destek seçenekleri sunar.
Sıkça Sorulan Sorular
Bir C# uygulaması PostgreSQL veritabanına nasıl bağlanır?
Bir C# uygulamasını PostgreSQL veritabanına bağlamak için, Visual Studio'da NuGet Paket Yöneticisi aracılığıyla yüklenebilen Npgsql veri sağlayıcısını kullanmanız gerekir. Ayrıca, sunucu adı, port, kullanıcı adı, şifre ve veritabanı adı içeren düzgün yapılandırılmış bir bağlantı dizesine ihtiyaç duyacaksınız.
PostgreSQL ile bir C# projesi kurarken hangi adımlar gereklidir?
Önce, makinenize Visual Studio ve PostgreSQL'i yükleyin. Ardından yeni bir C# projesi oluşturun ve Npgsql veri sağlayıcısını yüklemek için NuGet Paket Yöneticisini kullanın. Bağlantı dizesinizi yapılandırın ve PostgreSQL sunucunuzun çalıştığından emin olun.
Bir C# uygulamasında SQL komutlarını nasıl çalıştırabilirim?
C# uygulamasında Npgsql veri sağlayıcısını kullanarak SQL komutları çalıştırabilirsiniz. PostgreSQL veritabanına bağlantı kurduktan sonra, NpgsqlCommand ile SELECT, INSERT, UPDATE ve DELETE gibi SQL sorgularını çalıştırabilirsiniz.
C#'da PostgreSQL verilerinden nasıl PDF raporu oluşturabilirim?
IronPDF, C#'da PostgreSQL verilerinden PDF raporları oluşturmanıza imkan tanır. Veritabanından veri alabilir ve IronPDF'in özelliklerini kullanarak bir PDF belgesi oluşturabilirsiniz, HTML içeriğini PDF'e dönüştürme veya mevcut PDF'leri düzenleme gibi.
C#'da Npgsql veri sağlayıcısı kullanmanın amacı nedir?
Npgsql veri sağlayıcısı, PostgreSQL veritabanlarıyla iletişimi sağlamak için C#'ta kullanılır. Uygulamanızın SQL sorgularını çalıştırmasına, veri yönetimine ve veritabanı ile kesintisiz etkileşime imkan tanır.
C# kullanarak bir veritabanı nasıl oluşturulur ve doldurulur?
C#'da, context.Database.EnsureCreated() metodunu kullanarak veritabanı oluşturabilirsiniz, bu metot veritabanının var olup olmadığını kontrol eder ve yoksa oluşturur. İlk verileri eklemek için verileri bağlama ekleyebilir ve context.SaveChanges() kullanarak kalıcı hale getirebilirsiniz.
Bir .NET uygulamasında IronPDF kullanmanın faydaları nelerdir?
IronPDF, PDF belgelerini oluşturma, düzenleme ve işleme için sağlam işlevsellik sunduğundan .NET uygulamalarında faydalıdır. HTML'yi PDF'e dönüştürme, metin ve resimleri düzenleme ve şifreleme gibi güvenlik özellikleri eklemek gibi işlemleri destekler.
Bir PostgreSQL tablosu için C#'da veri modeli nasıl tanımlanır?
Bir PostgreSQL tablolarının yapısına karşılık gelen bir sınıf oluşturarak C#'da veri modeli tanımlayabilirsiniz. Sınıftaki her özelliğin tabloya ait bir sütuna karşılık gelmesi gereklidir, böylece Entity Framework veriyi doğru şekilde eşleştirebilir.
C# ve PostgreSQL arasındaki bağlantı sorunlarını nasıl tanılarım?
Bağlantı sorunlarını gidermek için, bağlantı dizenizin doğru yapılandırıldığından emin olun, PostgreSQL sunucunuzun çalıştığını doğrulayın ve bağlantıyı engelleyebilecek herhangi bir güvenlik duvarı veya ağ sorunu olup olmadığını kontrol edin.




