.NET 幫助

Npgsql C# .NET(開發人員如何使用)

介紹

Npgsql 是一個功能豐富且具高韌性的開源數據提供者,專為想要順暢存取和交互 PostgreSQL 資料庫的 .NET 應用程式而設計。 它作為PostgreSQL和.NET程式之間的強大連結,提供多種功能、工具和優化,以實現高效的資料存取和處理。

GitHub上的開發團隊或貢獻者可能會隨著開源項目的進展進行更改,新的人員也經常加入以協助軟體的維護和增強。 因此,建議查看 GitHub 上的官方Npgsql 儲存庫或與專案相關的其他社群渠道,以獲取有關 Npgsql 開發團隊和貢獻者的最新資訊。

如何在 C# 中使用 Npgsql

  1. 創建一個新的Visual Studio項目。

  2. 安裝所需的庫。

  3. 為 PostgreSQL 的數據提供者創建一個對象。

  4. 將查詢傳遞給提供者。

  5. 關閉連接並釋放物件。

安裝 Npgsql

以下說明可用於安裝 Npgsql,這是一個用於 PostgreSQL 的 .NET 數據提供程序:

  • 啟動 Visual Studio。
  • 在工具 > NuGet 套件管理員下,導航到套件管理員主控台。
  • 在套件管理器控制台中輸入以下命令:
Install-Package Npgsql
Install-Package Npgsql
SHELL

Npgsql .NET 提供者

Npgsql 是一個 .NET 資料提供者,使 C# 和其他 .NET 語言的開發人員可以連接、訪問和管理 PostgreSQL 資料庫。 利用 Entity Framework Core 提供程序和 ADO.NET 数据提供程序的功能,讓開發人員在其應用程式中充分利用 PostgreSQL。 在本文中,我們將詳細了解 Npgsql。

Npgsql的重要特點如下:

  • 相容性與一致性:透過支援廣泛的 PostgreSQL 特定功能、資料類型、函數和功能,Npgsql 保證符合 PostgreSQL 標準。
  • 高性能:其主要目標是透過使用異步I/O操作及其他提升性能的策略,來優化性能以提供有效的數據訪問和操作。
  • 安全性和可靠性:Npgsql 對安全性給予高度重視,包括 SSL 加密和 PostgreSQL 的安全身份驗證技術等功能,確保數據庫和應用程式的安全連接。
  • 跨平台支援:其無縫架構允許其在多種作業系統中運行,例如 Windows、Linux 和 macOS,提供部署環境靈活性。
  • Entity Framework 整合:由於 Npgsql 與 Entity Framework Core 的順利整合,開發人員可以使用 LINQ 查詢和 ORM(物件關聯映射)方法與 PostgreSQL 資料庫通訊。
  • 一種非常受歡迎的 PostgreSQL 輕量級連接資源池管理器稱為pgBouncer。 由於 pgBouncer 能夠管理連線池並作為客戶端連線的代理,因此可以更有效地使用 PostgreSQL 伺服器資源。 PgBouncer 可以透過在 PostgreSQL 伺服器前配置,通過將傳入的連接分配到多個 PostgreSQL 實例來幫助負載平衡。

    在他們的 .NET 應用程式中,開發人員經常使用 Npgsql 來建立連接、執行 SQL 查詢、處理交易、執行 CRUD 任務及維護資料庫模式。 它讓程式設計師能夠創建與PostgreSQL資料庫配合良好的可靠、可擴展和高效能應用程式。

    由於其廣泛的功能集和定期更新,Npgsql 是 .NET 開發人員的首選,他們希望在 C# 或 .NET 應用中使用 PostgreSQL 的強大性和可靠性,同時也能從靈活且維護良好的數據源中受益。

連接Npgsql

開發人員可以使用 Npgsql 連接 PostgreSQL 數據庫、執行 SQL 查詢、進行 CRUD(創建、讀取、更新、刪除)任務、管理事務等等。

以下是一個基本的程式碼片段,展示如何使用 Npgsql 連接到 PostgreSQL 資料庫:

using Npgsql;
using System;

class Program
{
    static void Main(string[] args)
    {
        var connectionString = "Host=myhost;Username=;Password=;Database=mydb";
        using var connection = new NpgsqlConnection(connectionString);
        try
        {
            connection.Open();
            Console.WriteLine("Connected to PostgreSQL database!");
            // Perform database operations here...
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
        finally
        {
            connection.Close();
        }
    }
}
using Npgsql;
using System;

class Program
{
    static void Main(string[] args)
    {
        var connectionString = "Host=myhost;Username=;Password=;Database=mydb";
        using var connection = new NpgsqlConnection(connectionString);
        try
        {
            connection.Open();
            Console.WriteLine("Connected to PostgreSQL database!");
            // Perform database operations here...
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
        finally
        {
            connection.Close();
        }
    }
}
Imports Npgsql
Imports System

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim connectionString = "Host=myhost;Username=;Password=;Database=mydb"
		Dim connection = New NpgsqlConnection(connectionString)
		Try
			connection.Open()
			Console.WriteLine("Connected to PostgreSQL database!")
			' Perform database operations here...
		Catch ex As Exception
			Console.WriteLine($"Error: {ex.Message}")
		Finally
			connection.Close()
		End Try
	End Sub
End Class
$vbLabelText   $csharpLabel

將連接字串的值(HostUsernamePasswordDatabase)替換為您的 PostgreSQL 伺服器的資訊。 您可以使用 Npgsql 的命令執行功能在try塊中運行 SQL 命令、查詢或其他資料庫操作。

Npgsql 是 .NET 開發人員選擇與 PostgreSQL 合作的熱門工具,因為它提供了廣泛的功能範圍和多種使用 C# 連接 PostgreSQL 資料庫的方法。 在您的應用程式代碼中,始終確保有效處理連結、例外情況和其他故障情況。

Npgsql 與 IronPDF

IronPDF 擅長HTML 轉換為 PDF的功能,確保所有的佈局和樣式都被保留。 它將網頁內容轉換為 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");
    }
}
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

要將 Npgsql 與 IronPDF 集成,請按照以下步驟操作:

  1. 安裝必要的 NuGet 套件:
    Install-Package Npgsql
    Install-Package IronPdf
    Install-Package Npgsql
    Install-Package IronPdf
SHELL
  1. 在您的代碼中導入所需的命名空間:
    using Npgsql;
    using IronPdf;
    using Npgsql;
    using IronPdf;
Imports Npgsql
	Imports IronPdf
$vbLabelText   $csharpLabel
  1. 建立 Npgsql 連接並從 PostgreSQL 數據庫檢索數據:
    string connectionString = "Host=myhost;Username=myuser;Password=mypassword;Database=mydb";
    string query = "SELECT * FROM mytable";

    using (NpgsqlConnection connection = new NpgsqlConnection(connectionString))
    {
        connection.Open();

        using (NpgsqlCommand command = new NpgsqlCommand(query, connection))
        {
            NpgsqlDataReader dataReader = command.ExecuteReader();

            if (dataReader.HasRows)
            {
                while (dataReader.Read())
                {
                    // Process each row of data here
                }
            }

            dataReader.Close();
        }

        connection.Close();
    }
    string connectionString = "Host=myhost;Username=myuser;Password=mypassword;Database=mydb";
    string query = "SELECT * FROM mytable";

    using (NpgsqlConnection connection = new NpgsqlConnection(connectionString))
    {
        connection.Open();

        using (NpgsqlCommand command = new NpgsqlCommand(query, connection))
        {
            NpgsqlDataReader dataReader = command.ExecuteReader();

            if (dataReader.HasRows)
            {
                while (dataReader.Read())
                {
                    // Process each row of data here
                }
            }

            dataReader.Close();
        }

        connection.Close();
    }
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel
  1. 使用 IronPDF 根據檢索到的數據生成 PDF 文件:
    HtmlToPdf Renderer = new HtmlToPdf();
    HtmlDocument Html = new HtmlDocument("<html><body><h1>My Data</h1></body></html>");

    PdfDocument PDF = Renderer.RenderHtmlAsPdf(Html);

    PDF.SaveAs("result.pdf");
    HtmlToPdf Renderer = new HtmlToPdf();
    HtmlDocument Html = new HtmlDocument("<html><body><h1>My Data</h1></body></html>");

    PdfDocument PDF = Renderer.RenderHtmlAsPdf(Html);

    PDF.SaveAs("result.pdf");
Dim Renderer As New HtmlToPdf()
	Dim Html As New HtmlDocument("<html><body><h1>My Data</h1></body></html>")

	Dim PDF As PdfDocument = Renderer.RenderHtmlAsPdf(Html)

	PDF.SaveAs("result.pdf")
$vbLabelText   $csharpLabel

請注意,您可能需要根據您的具體需求和數據庫結構自訂代碼。

透過遵循這些步驟,您可以結合 Npgsql 和 IronPDF 的功能,從 PostgreSQL 資料庫中檢索資料並根據該資料生成 PDF 文件。

安裝 IronPDF 庫

使用 NuGet 套件管理器安裝

要將 IronPDF 整合到您的 NpgSQL C# 專案中,使用 NuGet 套件管理器,請按照以下步驟操作:

  1. 打開 Visual Studio,然後在方案總管中右鍵單擊您的項目。

  2. 從內容選單中選擇「管理 NuGet 套件...」。

  3. 前往「瀏覽」標籤並搜尋 IronPDF。

  4. 從搜尋結果中選擇IronPDF程式庫,然後點擊安裝按鈕。

  5. 接受任何許可協議提示。

    如果您想通過套件管理器控制台在您的專案中包含IronPDF,請在套件管理器控制台中執行以下命令:

Install-Package IronPdf
Install-Package IronPdf
SHELL

這將會將 IronPDF 取回並安裝到您的專案中。

使用 NuGet 網站安裝

有關IronPDF的詳細概述,包括其功能、兼容性和其他下載選項,請造訪NuGet上的IronPDF列表

通過 DLL 安裝

或者,您可以通過使用其 DLL 檔案直接將 IronPDF 併入您的專案。從此IronPDF ZIP 下載鏈接下載包含 DLL 的 ZIP 檔案。 解壓縮後,將 DLL 包含在您的專案中。

使用 IronPDF 與 Npgsql 數據

截至2022年1月,Npgsql和IronPDF在.NET應用中有多種用途。Npgsql是一個數據提供者,能夠讓.NET程序更容易連接到PostgreSQL數據庫,而IronPDF是一個C#庫,用於生成、修改和顯示PDF文檔。

由於 Npgsql 和 IronPDF 在 .NET 環境中提供的功能是獨立的,因此兩者之間沒有直接的關聯或依賴關係。 然而,在一個應用程式中同時使用兩個函式庫是很常見的——IronPDF 用於 PDF 的生成或操作,Npgsql 用於資料庫操作。

以下是如何在 C# 應用程式中使用 IronPDF 進行 PDF 創建和使用 Npgsql 進行資料庫操作的範例:

using IronPdf;
using Npgsql;
using System;
using System.Text;

class Program
{
    static async Task Main(string[] args)
    {
        StringBuilder sb = new StringBuilder();
        var connectionString = "Host=myhost;Username=myuser;Password=mypassword;Database=mydb";

        // Connecting to PostgreSQL using Npgsql
        await using var connection = new NpgsqlConnection(connectionString);
        try
        {
            await connection.OpenAsync();
            Console.WriteLine("Connected to PostgreSQL!");

            // Execute a database query using Npgsql
            await using var cmd = new NpgsqlCommand("SELECT username FROM my_table WHERE userid='005'", connection);
            await using var reader = await cmd.ExecuteReaderAsync();

            while (await reader.ReadAsync())
            {
                // Process database query results
                sb.Append(reader.GetString(0));
            }

            // Generate a PDF document using IronPDF
            var Renderer = new IronPdf.HtmlToPdf();
            var PDF = Renderer.RenderHtmlAsPdf($"<h1>Hello, {sb.ToString()}</h1>");
            PDF.SaveAs("Output.pdf");

            Console.WriteLine("PDF generated successfully.");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
        finally
        {
            connection.Close();
        }
    }
}
using IronPdf;
using Npgsql;
using System;
using System.Text;

class Program
{
    static async Task Main(string[] args)
    {
        StringBuilder sb = new StringBuilder();
        var connectionString = "Host=myhost;Username=myuser;Password=mypassword;Database=mydb";

        // Connecting to PostgreSQL using Npgsql
        await using var connection = new NpgsqlConnection(connectionString);
        try
        {
            await connection.OpenAsync();
            Console.WriteLine("Connected to PostgreSQL!");

            // Execute a database query using Npgsql
            await using var cmd = new NpgsqlCommand("SELECT username FROM my_table WHERE userid='005'", connection);
            await using var reader = await cmd.ExecuteReaderAsync();

            while (await reader.ReadAsync())
            {
                // Process database query results
                sb.Append(reader.GetString(0));
            }

            // Generate a PDF document using IronPDF
            var Renderer = new IronPdf.HtmlToPdf();
            var PDF = Renderer.RenderHtmlAsPdf($"<h1>Hello, {sb.ToString()}</h1>");
            PDF.SaveAs("Output.pdf");

            Console.WriteLine("PDF generated successfully.");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
        finally
        {
            connection.Close();
        }
    }
}
Imports IronPdf
Imports Npgsql
Imports System
Imports System.Text

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Dim sb As New StringBuilder()
		Dim connectionString = "Host=myhost;Username=myuser;Password=mypassword;Database=mydb"

		' Connecting to PostgreSQL using Npgsql
		Await var connection = New NpgsqlConnection(connectionString)
		Try
			Await connection.OpenAsync()
			Console.WriteLine("Connected to PostgreSQL!")

			' Execute a database query using Npgsql
			Await var cmd = New NpgsqlCommand("SELECT username FROM my_table WHERE userid='005'", connection)
			Await var reader = Await cmd.ExecuteReaderAsync()

			Do While Await reader.ReadAsync()
				' Process database query results
				sb.Append(reader.GetString(0))
			Loop

			' Generate a PDF document using IronPDF
			Dim Renderer = New IronPdf.HtmlToPdf()
			Dim PDF = Renderer.RenderHtmlAsPdf($"<h1>Hello, {sb.ToString()}</h1>")
			PDF.SaveAs("Output.pdf")

			Console.WriteLine("PDF generated successfully.")
		Catch ex As Exception
			Console.WriteLine($"Error: {ex.Message}")
		Finally
			connection.Close()
		End Try
	End Function
End Class
$vbLabelText   $csharpLabel

此範例演示了一個情境,其中使用IronPDF創建一個基本的PDF文件,並使用Npgsql連接到PostgreSQL資料庫並運行一個範例查詢。 透過將這兩個函式庫整合到他們的 C# 應用程式中,開發者可以在同一個代碼庫中獨立管理資料庫互動和文件製作。

請記得自訂代碼以符合您獨特的數據庫查詢、PDF 生成要求、錯誤處理,以及使用 Npgsql 和 IronPDF 的應用程序特定最佳實踐。 如需有關 IronPDF 庫的更多資訊,請造訪IronPDF 文件

輸出

Npgsql C# .NET(開發人員如何工作):圖 3 - 輸出:Output.pdf 檔案。

結論

儘管 Npgsql 與 IronPDF 之間沒有直接的連結或依賴性,但開發者經常在相同的應用環境中使用這兩個工具。 例如,一個 C# 程式可以利用 Npgsql 處理資料庫操作,比如從 PostgreSQL 資料庫檢索資料,然後使用 IronPDF 根據檢索到的數據生成 PDF 文件或報告。

通過利用Npgsql和IronPDF所提供的靈活性和功能,開發人員可以構建功能豐富的應用程序,這些應用程序能夠無縫集成數據處理與PostgreSQL數據庫,並實現動態PDF生成,以滿足各種報告、文檔管理和展示需求。

IronPDF 的 Lite 套裝包括永久授權、升級選項、一年的軟體維護以及三十天退費保證。 在試用期內,用戶可以在實際應用場景中評估產品,但會有浮水印。 如需了解更多有關 IronPDF 的費用、授權和試用版本的信息,請訪問 IronPDF 授權頁面。 要了解更多關於Iron Software的資訊,請造訪他們的官方網站

Chipego
奇佩戈·卡林达
軟體工程師
Chipego 擁有天生的傾聽技能,這幫助他理解客戶問題,並提供智能解決方案。他在獲得信息技術理學學士學位後,于 2023 年加入 Iron Software 團隊。IronPDF 和 IronOCR 是 Chipego 專注的兩個產品,但隨著他每天找到新的方法來支持客戶,他對所有產品的了解也在不斷增長。他喜歡在 Iron Software 的協作生活,公司內的團隊成員從各自不同的經歷中共同努力,創造出有效的創新解決方案。當 Chipego 離開辦公桌時,他常常享受讀好書或踢足球的樂趣。
< 上一頁
C# 反射(開發人員如何使用)
下一個 >
Cefsharp.WPF.NET Core(開發人員如何運作)