C# PostgreSQL(開發者使用指南)
歡迎來到本教程,本教程專為對將 C# 應用程式與PostgreSQL整合感興趣的初學者而設計。 PostgreSQL 是全球使用最廣泛的關聯式資料庫之一,以其可靠性和與包括 C# 在內的各種程式設計環境的兼容性而聞名。 本指南將引導您了解如何將 C# 應用程式連接到 PostgreSQL 資料庫、執行 SQL 語句查詢以及處理資料。 我們將使用 Visual Studio、NuGet 套件管理器和 Npgsql 資料提供者等工具來建立一個與 PostgreSQL 伺服器通訊的簡單專案。 我們還將學習 IronPDF 庫及其與 PostgreSQL 的整合。
設定您的環境
在開始編寫程式碼之前,請確保您的電腦上已安裝 Visual Studio。 Visual Studio 是一款受歡迎的整合開發環境 (IDE),它支援包括 C# 在內的多種程式語言。 對於資料庫管理,請在本機電腦上安裝 PostgreSQL,或在 Azure Database 等雲端環境中設定 PostgreSQL 資料庫。
安裝好 Visual Studio 和 PostgreSQL 伺服器後,建立一個新的 C# 專案。 你可以透過開啟 Visual Studio,轉到"檔案"選單,選擇"新建",然後選擇"專案"來完成此操作。 為了簡化操作,請選擇控制台應用程式 (.NET Core) 作為專案類型。
將 PostgreSQL 與 C# 集成
要將 C# 應用程式連接到 PostgreSQL 資料庫,您需要 Npgsql 資料提供者。 Npgsql 可作為 C# 應用程式和 PostgreSQL 資料庫之間的橋樑,使您的程式碼能夠執行 SQL 命令和管理資料。
安裝 Npgsql
在 Visual Studio 中開啟你新建的專案。 在解決方案資源管理器中右鍵單擊您的項目,選擇"管理 NuGet 套件",然後搜尋 Npgsql 套件。 點擊軟體包名稱旁的安裝按鈕即可安裝。 此操作會將 Npgsql 資料提供者新增至您的專案中,使您的應用程式能夠與 PostgreSQL 通訊。 您也可以使用軟體套件管理器控制台進行安裝。
配置資料庫連接
從 C# 與 PostgreSQL 資料庫互動的第一步是建立連線。 這需要一個連接字串,其中包含伺服器名稱、連接埠、使用者名稱和密碼等詳細資訊。 以下是一個基本的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";將localhost 、 yourpassword和mydatabase替換為您的 PostgreSQL 伺服器的詳細資訊。
定義員工模型
我們定義了一個員工實體模型,該模型將表示我們在 PostgreSQL 資料庫中的資料。 此模型包含與資料庫表中的列相對應的屬性。
public class Employee
{
public int Id { get; 放; } // Automatically becomes the primary key
public string LastName { get; 放; }
}public class Employee
{
public int Id { get; 放; } // Automatically becomes the primary key
public string LastName { get; 放; }
}這段程式碼定義了一個簡單的Employee類別,它有兩個屬性: Id和LastName 。 Entity Framework Core 使用約定來推斷Id序列主鍵屬性應該被視為主鍵。
配置應用程式的 DbContext
AppDbContext類別繼承自 Entity Framework Core 中的DbContext ,充當 C# 應用程式和 PostgreSQL 資料庫之間的橋樑。 它包含配置詳細信息,例如連接字串和表示資料庫中表的DbSet屬性。
public class AppDbContext : DbContext
{
public DbSet<Employee> Employees { get; 放; } // 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; 放; } // 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");
}
}DbSet 屬性:**公共資料庫集
員工 { 取得; 放; }宣告一個員工集合。**對應到 PostgreSQL 資料庫中 employee 表的實體。 OnConfiguring 方法:此方法使用必要的資料庫連接字串配置DbContext 。 請將your_password和your_database替換為您的實際 PostgreSQL 伺服器詳細資訊。
- OnModelCreating 方法:您可以在此使用 Fluent API 進一步配置實體行為。 在這個例子中,我們明確指定了表名,不過如果表名與DbSet屬性名匹配,則表名是可選的。
主程式邏輯
在Program類別的Main方法中,我們確保資料庫已創建,如果為空則以初始資料填充,然後執行查詢以檢索和顯示員工資料。
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}");
}
}
}
}上述程式碼檢查資料庫是否存在,如果不存在,則建立資料庫及其架構。 這是在開發過程中引導新資料庫的簡單方法。 此 SQL 語句會檢查員工表是否為空,如果為空,程式會新增姓氏為"Software"的新員工,並將變更儲存到資料庫。 此程式會查詢員工表中姓氏為"Software"的條目,並將其詳細資料列印到控制台。
輸出
以下是執行程式時的控制台輸出:
C# PostgreSQL(開發者使用指南):圖 2 - 輸出
這是 PgAdmin 中的表格資料:
IronPDF簡介
探索 IronPDF 庫的功能,了解這個全面的 C# 庫如何使開發人員能夠在 .NET 應用程式中建立、編輯和操作 PDF 文件。 這款強大的工具簡化了從 HTML、URL 和圖像生成 PDF 的過程。 它還提供基本的 PDF 操作,例如編輯文字和圖像,以及添加加密和數位簽名等安全功能。 IronPDF 的突出特點是易於使用,它允許開發人員以最少的程式碼實現複雜的 PDF 功能。
IronPDF 能夠輕鬆地將 HTML 轉換為 PDF ,同時保持佈局和樣式不變。 此功能非常適合從基於 Web 的內容(例如報告、發票和文件)產生 PDF 文件。 它可以將 HTML 檔案、URL 和 HTML 字串轉換為 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");
}
}在需要根據資料庫中儲存的動態資料產生 PDF 報告或文件的場景中,將 IronPDF 與 PostgreSQL 資料庫整合會非常有用。 這包括直接從 PostgreSQL 資料庫持久化的資料產生發票、報告、客戶報表等等。
安裝 IronPDF
使用 IronPDF 之前,必須先將其新增至項目。 這可以透過 NuGet 套件管理器輕鬆完成:
Install-Package IronPdf
從 PostgreSQL 資料生成 PDF
在這個範例中,我們產生一個簡單的 PDF 報告,列出 PostgreSQL 資料庫中的員工。 我們假設您已經按照前面章節的說明設定了AppDbContext和Employee模型。
首先,請確保您的專案中已安裝 IronPDF 庫。 然後,您可以使用以下程式碼從 PostgreSQL 資料庫中取得資料並產生 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}");
}
}
}輸出
運行程式碼後,控制台將顯示以下輸出:
C# PostgreSQL(開發者使用指南):圖 4 - 控制台輸出
已產生此PDF檔案:
結論
您已經使用 C# 和 PostgreSQL 邁出了進入資料庫管理領域的重要一步。 透過按照本教學中的說明進行操作,您已經學會如何在 Visual Studio 中設定專案、安裝必要的套件以及執行基本的資料庫操作。 隨著你對這些概念越來越熟悉,你會發現將 C# 與最重要的關係資料庫系統之一結合起來的強大功能和靈活性。 不斷嘗試不同的查詢和實體配置,以加深對 C# 如何與 PostgreSQL 互動的理解。
IronPDF 提供IronPDF 功能的免費試用版,讓開發者無需任何初始投資即可探索其功能和功能。 此試用版對於評估 IronPDF 在 .NET 應用程式中產生、編輯和轉換 PDF 文件方面是否能滿足您的專案要求特別有用。 試用期結束後或用於生產用途時,需取得許可證。 IronPDF 的許可起價為$799 ,提供一系列功能和支援選項,以滿足不同的開發需求。
常見問題解答
如何將 C# 應用程式連接到 PostgreSQL 資料庫?
要將 C# 應用程式連接到 PostgreSQL 資料庫,您需要使用 Npgsql 資料提供程序,該提供者可以透過 Visual Studio 中的 NuGet 套件管理器進行安裝。您還需要一個配置正確的連接字串,其中包含伺服器名稱、連接埠、使用者名稱、密碼和資料庫名稱。
使用 PostgreSQL 設定 C# 專案需要哪些步驟?
首先,在您的電腦上安裝 Visual Studio 和 PostgreSQL。然後,建立一個新的 C# 項目,並使用 NuGet 套件管理器安裝 Npgsql 資料提供者。配置連接字串並確保 PostgreSQL 伺服器正在運行。
如何在C#應用程式中執行SQL命令?
您可以使用 Npgsql 資料提供者在 C# 應用程式中執行 SQL 命令。建立與 PostgreSQL 資料庫的連線後,您可以使用NpgsqlCommand執行 SQL 查詢,例如 SELECT、INSERT、UPDATE 和 DELETE。
如何使用 C# 從 PostgreSQL 資料產生 PDF 報告?
IronPDF 讓您可以使用 C# 從 PostgreSQL 資料產生 PDF 報告。您可以從資料庫中擷取數據,並使用 IronPDF 的各項功能建立 PDF 文檔,包括將 HTML 內容轉換為 PDF 或編輯現有 PDF。
在 C# 中使用 Npgsql 資料提供者的目的是什麼?
Npgsql 資料提供者在 C# 中用於簡化與 PostgreSQL 資料庫的通訊。它允許您的應用程式執行 SQL 查詢、管理資料並與資料庫無縫互動。
如何使用 C# 建立和填充資料庫?
在 C# 中,可以使用context.Database.EnsureCreated()方法建立資料庫。此方法會檢查資料庫是否存在,如果不存在則建立它。您可以透過向上下文中新增資料來填入初始數據,並使用context.SaveChanges()將其儲存到資料庫中。
在 .NET 應用程式中使用 IronPDF 有哪些好處?
IronPDF 在 .NET 應用程式中非常有用,因為它提供了強大的 PDF 文件創建、編輯和操作功能。它支援將 HTML 轉換為 PDF、編輯文字和圖像,以及添加加密等安全功能。
如何在 C# 中為 PostgreSQL 表定義資料模型?
您可以使用 C# 定義資料模型,方法是建立一個與 PostgreSQL 表結構相對應的類別。類別中的每個屬性都應該與表中的一列相匹配,以便 Entity Framework 能夠正確地映射資料。
如何排查 C# 和 PostgreSQL 之間的連線問題?
若要排查連線問題,請確保連線字串配置正確,驗證 PostgreSQL 伺服器是否正在運行,並檢查是否有任何可能阻止連線的防火牆或網路問題。







