跳至页脚内容
.NET 帮助

Npgsql C#(开发人员如何使用)

Npgsql 是一项关键技术,它在开发人员寻找强大的数据库工作方式时,实现 .NET 应用程序与 PostgreSQL 数据库之间的顺畅通信。 .NET Data Provider for PostgreSQL server,即 Npgsql,是数据库连接领域创造力、有效性和适应性的象征。 它允许 C#、Visual Basic 和 F# 用户访问数据库。 EF Core 用户还可以使用传统的实体框架 6.x。

一种广受欢迎的 .NET 库,名为 IronPDF,用于 C# 和 VB.NET 程序中生成、修改和显示 PDF 文档。 除了执行合并多个 PDF 文件、添加水印以及从现有 PDF 文件中提取文本或图像等复杂任务,IronPDF 还使开发人员能够从各种来源(包括 HTML、图片和原始文本)创建 PDF 文件。

通过本教程,您将学习如何在 C# 应用程序中集成 IronPDFNPGSQL。 我们将研究从简单设置到复杂功能,这些工具如何结合使用以改善您的应用程序的功能。

如何使用 Npgsql

  1. 创建一个新的 C# 项目
  2. 安装 Npgsql 库。
  3. 连接到 Npgsql 数据库。
  4. 执行查询并获取结果。
  5. 处理结果并关闭连接。

1. Npgsql 简介

从根本上讲,Npgsql 是 .NET 开发人员与 PostgreSQL(一个以稳定性、可扩展性和可扩展性著称的开源关系数据库管理系统)之间的联系。 Npgsql 通过提供丰富的功能集,使开发人员能够方便有效地处理事务、执行查询、检索数据以及简化数据库操作。

1.1 使用 Npgsql 的优势

性能: Npgsql 的速度和效率是内置的。 为了保证使用 PostgreSQL 数据库时的最佳速度,Npgsql 利用批处理命令、异步输入/输出和优化数据类型等功能。

完整的 PostgreSQL 支持: Npgsql 的目标是对所有 PostgreSQL 功能(如数组、JSONB、高级数据类型和用户定义类型)提供完整支持。这意味着程序员可以在他们的 .NET 应用程序中充分利用 PostgreSQL 的潜力。

1.2 Npgsql 入门

1.2.1 在 C# 项目中设置 Npgsql

将 Npgsql 集成到 C# 项目中是简单的。 添加 Npgsql 需要使用微软的 .NET 包管理器 NuGet。 该库提供了与您的项目中集成 PostgreSQL 数据库和 Npgsql 所需的工具和库。

Npgsql C#(它如何为开发人员工作):图1 - 使用解决方案的 NuGet 包管理器通过在 NuGet 包管理器的搜索栏中搜索Npgsql,然后选择项目并单击安装按钮来安装 Npgsql。

1.2.2 在 Windows 控制台和表单中实现 Npgsql

几种 C# 应用类型,如 Windows 窗体(WinForms)和 Windows 控制台,可以使用 Npgsql。 虽然每个框架的实现有所不同,但基本理念始终如一:Npgsql 是您应用程序中数据库的容器。

1.2.3 从 Npgsql 获取数据的基本示例

在处理 PostgreSQL 数据库之前,请先与 Npgsql 建立连接。 然后运行 SQL 查询从 PostgreSQL 获取数据。 NpgsqlCommand 是一个运行 SQL 查询的工具。

using Npgsql;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // PostgreSQL connection string
        string connString = "Host=myServerAddress;Port=myPort;Username=myUsername;Password=myPassword;Database=myDatabase";

        // Create connection object
        using (var conn = new NpgsqlConnection(connString))
        {
            // Open the connection
            await conn.OpenAsync();

            // SQL query to execute
            string sql = "SELECT * FROM myTable";

            // Create NpgsqlCommand
            using (var cmd = new NpgsqlCommand(sql, conn))
            {
                // Execute the command and retrieve data
                using (var reader = await cmd.ExecuteReaderAsync())
                {
                    // Loop through the retrieved data
                    while (await reader.ReadAsync())
                    {
                        // Retrieve data from the data reader
                        string name = reader["Name"].ToString();
                        int age = Convert.ToInt32(reader["Age"]);
                        // Output retrieved data to console
                        Console.WriteLine($"Name: {name}, Age: {age}");
                    }
                }
            }
            // Connection will be automatically closed here due to the 'using' block
        }
    }
}
using Npgsql;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // PostgreSQL connection string
        string connString = "Host=myServerAddress;Port=myPort;Username=myUsername;Password=myPassword;Database=myDatabase";

        // Create connection object
        using (var conn = new NpgsqlConnection(connString))
        {
            // Open the connection
            await conn.OpenAsync();

            // SQL query to execute
            string sql = "SELECT * FROM myTable";

            // Create NpgsqlCommand
            using (var cmd = new NpgsqlCommand(sql, conn))
            {
                // Execute the command and retrieve data
                using (var reader = await cmd.ExecuteReaderAsync())
                {
                    // Loop through the retrieved data
                    while (await reader.ReadAsync())
                    {
                        // Retrieve data from the data reader
                        string name = reader["Name"].ToString();
                        int age = Convert.ToInt32(reader["Age"]);
                        // Output retrieved data to console
                        Console.WriteLine($"Name: {name}, Age: {age}");
                    }
                }
            }
            // Connection will be automatically closed here due to the 'using' block
        }
    }
}
$vbLabelText   $csharpLabel

在上述代码片段中,我们从 Npgsql 获取数据并将其显示在控制台中。 下面的图像显示了已执行查询的结果。

Npgsql C#(它如何为开发人员工作):图2 - 控制台输出,使用 Npgsql 包在 .NET 项目中从 PostgreSQL 数据库显示姓名和年龄。

2. 与 PostgreSQL 的 Npgsql 操作

2.1 与 PostgreSQL 的参数化查询

因为参数化查询使数据库服务器能够缓存查询计划,因此它们可以提高查询性能并有助于防止 SQL 注入攻击。 Npgsql 支持参数化查询。 此外,参数化查询还可以更安全有效地处理动态 SQL 查询。

2.2 与 PostgreSQL 的批量操作

当处理大型数据集时,Npgsql 支持的批量插入、更新和删除操作能够极大地提高速度。 由于批量操作可以在单个数据库事务中处理多行,从而减少了与数据库服务器之间的单独往返。

交易与 PostgreSQL

Npgsql 支持事务,这使得可以将多个数据库操作分组成一个原子单元。 事务通过要么将所有更改提交到数据库,要么在出现错误时回滚整个事务来提供数据的一致性和完整性。

2.3 使用 PostgreSQL 的性能优化

在使用 PostgreSQL 数据库时,Npgsql 提供了许多性能增强功能,包括查询计划缓存、结果流处理和命令批处理,以减少延迟并提高吞吐量。 这些增强功能提高了应用程序的可扩展性和总体速度。

2.4 与 PostgreSQL 数据库的连接

使用 Npgsql 可以通过以下几行代码轻松连接到 PostgreSQL 数据库服务器。

NpgsqlConnection conn = new NpgsqlConnection(connString);
NpgsqlConnection conn = new NpgsqlConnection(connString);
$vbLabelText   $csharpLabel

这个基本的代码片段可以帮助我们连接到 PostgreSQL 数据库服务器。

3. 将 Npgsql 与 IronPDF 集成

3.1 同时使用 Npgsql 和 IronPDF

当 Npgsql 和 IronPDF 在 C# 项目中一起使用时,会带来令人振奋的可能性。 虽然 Npgsql 是处理 PostgreSQL 的一个很好的工具,但 IronPDF 是将这些内容转换为 PDF 的另一个很好的工具。 由于这种连接,程序员可以设计能够与数据库通信并能够将这些内容转换为 PDF 的应用程序。

3.2 使用 IronPDF 获取 PostgreSQL 数据

通过构建一个使用 Npgsql 的 Windows 控制台应用程序,让用户可以在应用程序中与数据库交互。 首先将数据库访问添加到您的应用程序中。为此控件提供足够的控制台空间,并留出大量空间用于数据库交互。 还包括数据类型映射和批量操作。

安装IronPDF

  • 在 Visual Studio 中启动该项目。
  • 选择"工具">"NuGet包管理器">"包管理器控制台"。

    • 在包管理器控制台中输入以下命令并按下 Enter 键:
    Install-Package IronPdf
  • 或者,您也可以通过使用解决方案的 NuGet 包管理器安装 IronPDF。
    • 在搜索结果中找到 IronPDF 包,选择它,然后单击"安装"按钮。 Visual Studio 将自动处理下载和安装。

Npgsql C#(它如何为开发人员工作):图3 - 使用解决方案的 NuGet 包管理器,通过在 NuGet 包管理器的搜索栏中搜索IronPDF,然后选择项目并单击安装按钮来安装 IronPDF。

  • NuGet 将下载并安装 IronPDF 包以及您的项目所需的任何依赖项。
  • 安装后,您可以开始在项目中使用 IronPDF。

通过NuGet网站安装

有关 IronPDF 的更多信息,包括功能、兼容性和其他下载选项,请访问 NuGet 上的 IronPDF 包 网站。

使用DLL安装

作为替代,您可以使用IronPDF的DLL文件将其直接集成到您的项目中。 使用此 IronPDF ZIP 包 链接下载包含 DLL 的 ZIP 文件。 解压缩后,将 DLL 添加到您的项目中。

实施逻辑

当我们开始运行应用程序时,它将使用 Npgsql .NET 库从数据库中获取数据。 借助 IronPDF,我们可以将数据库内容转换为 PDF 文档。

1.获取数据:当用户开始转换时,从 Npgsql .NET 提供程序获取最新内容。 2.使用 IronPDF 生成 PDF:要将 Npgsql 数据库中的数据转换为 PDF,请使用 IronPDF。 HtmlToPdf 类可以将 HTML 字符串格式化为 PDF 文档。 3.保存 PDF 并通知:将生成的 PDF 保存到指定位置,或在控制台上留下可见消息。 一旦 PDF 保存完成,通知用户(可能通过终端消息)转换成功。

using Npgsql;
using IronPdf;
using System;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // StringBuilder for HTML content
        StringBuilder sb = new StringBuilder();
        var Renderer = new ChromePdfRenderer(); // Instantiates Chrome Renderer

        sb.Append("<h1>Dynamic PDF Generated from PostgreSQL Data</h1>");

        // PostgreSQL connection setup
        string connString = "Host=myServerAddress;Port=myPort;Username=myUsername;Password=myPassword;Database=myDatabase";

        using (var conn = new NpgsqlConnection(connString))
        {
            await conn.OpenAsync();

            string sql = "SELECT * FROM myTable";
            using (var cmd = new NpgsqlCommand(sql, conn))
            {
                using (var reader = await cmd.ExecuteReaderAsync())
                {
                    while (await reader.ReadAsync())
                    {
                        // Retrieve data from the data reader
                        string name = reader["Name"].ToString();
                        int age = Convert.ToInt32(reader["Age"]);

                        // Add data to the PDF
                        sb.Append($"<p>Name: {name}, Age: {age}</p>");
                    }
                }
            }

            // Generate and save the PDF document
            var pdf = Renderer.RenderHtmlAsPdf(sb.ToString());
            pdf.SaveAs("output.pdf");

            // Connection will be automatically closed here
        }

        Console.WriteLine("PDF generation completed. See output.pdf for results.");
    }
}
using Npgsql;
using IronPdf;
using System;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // StringBuilder for HTML content
        StringBuilder sb = new StringBuilder();
        var Renderer = new ChromePdfRenderer(); // Instantiates Chrome Renderer

        sb.Append("<h1>Dynamic PDF Generated from PostgreSQL Data</h1>");

        // PostgreSQL connection setup
        string connString = "Host=myServerAddress;Port=myPort;Username=myUsername;Password=myPassword;Database=myDatabase";

        using (var conn = new NpgsqlConnection(connString))
        {
            await conn.OpenAsync();

            string sql = "SELECT * FROM myTable";
            using (var cmd = new NpgsqlCommand(sql, conn))
            {
                using (var reader = await cmd.ExecuteReaderAsync())
                {
                    while (await reader.ReadAsync())
                    {
                        // Retrieve data from the data reader
                        string name = reader["Name"].ToString();
                        int age = Convert.ToInt32(reader["Age"]);

                        // Add data to the PDF
                        sb.Append($"<p>Name: {name}, Age: {age}</p>");
                    }
                }
            }

            // Generate and save the PDF document
            var pdf = Renderer.RenderHtmlAsPdf(sb.ToString());
            pdf.SaveAs("output.pdf");

            // Connection will be automatically closed here
        }

        Console.WriteLine("PDF generation completed. See output.pdf for results.");
    }
}
$vbLabelText   $csharpLabel

以下是由上述代码生成的结果。 有关 IronPDF 文档 的更多信息,请参阅指南。

Npgsql C#(它如何为开发人员工作):图4 - 使用 Npgsql PostgreSQL 数据库和 IronPDF 使用的数据生成的输出 PDF。

结论

通过 IronPDF 的 PDF 生成功能Npgsql PostgreSQL 数据库连接 的伟大集成,开发人员可以设计灵活且强大的解决方案,用于生成符合其独特需求的动态 PDF 文档。

$799 Lite 套餐包括永久许可证和一年的软件支持,以及升级选项。 IronPDF 提供免费许可选项。 欲了解更多关于 Iron Software 的其他产品,请访问其 产品页面

IronPDF 还提供全面的文档和代码示例用于 PDF 生成和操作,以利用 IronPDF 的各种功能,且这些示例会得到积极维护。

常见问题解答

如何将 C# 应用程序连接到 PostgreSQL 数据库?

要将 C# 应用程序连接到 PostgreSQL 数据库,可以使用 Npgsql,这是一个用于 PostgreSQL 的 .NET 数据提供程序。首先,通过 Visual Studio 中的 NuGet 包管理器安装 Npgsql。然后,创建连接字符串并使用 NpgsqlConnection 类与数据库建立连接。

Npgsql 在数据库操作中的作用是什么?

Npgsql 在数据库操作中发挥重要作用,使 .NET 应用程序能够与 PostgreSQL 数据库通信。它支持各种功能,如批量命令和异步 I/O,这些功能优化了性能,是开发人员的首选。

参数化查询如何改善 PostgreSQL 中的安全性?

参数化查询通过防止 SQL 注入攻击来提高安全性。它们确保用户输入被视为数据而不是可执行代码。使用 Npgsql,您可以使用参数化查询来安全地处理 PostgreSQL 中的动态 SQL 查询。

如何在 Windows Forms 应用程序中使用 Npgsql?

Npgsql 可以在 Windows Forms 应用程序中用于管理 PostgreSQL 数据库。通过集成 Npgsql,开发人员可以在应用程序内执行查询和检索数据。IronPDF 可用于从检索到的数据在 Windows Forms 应用程序中生成 PDF。

Npgsql 为 .NET 开发人员提供哪些好处?

Npgsql 提供的好处包括全面的 PostgreSQL 支持,包括处理数组和 JSONB,以及性能特性,如异步 I/O 和命令批处理。这使得 Npgsql 成为使用 PostgreSQL 数据库的 .NET 开发人员的强大工具。

如何在C#中从PostgreSQL数据生成PDF报告?

您可以通过使用 IronPDF 从 PostgreSQL 数据生成 PDF 报告。首先,使用 Npgsql 从 PostgreSQL 数据库查询和检索数据。然后根据需要格式化数据,并使用 IronPDF 将其转换为 PDF 文档。

设置 Npgsql 在 C# 项目中涉及哪些步骤?

要在 C# 项目中设置 Npgsql,首先通过使用 NuGet 包管理器安装 Npgsql。接下来,为您的 PostgreSQL 数据库创建连接字符串。使用 NpgsqlConnection 类连接到数据库并根据需要执行查询。

如何以 PDF 格式记录数据库查询结果?

要以 PDF 格式记录数据库查询结果,使用 Npgsql 执行查询并从 PostgreSQL 数据库检索结果。然后,使用 IronPDF 将数据转换为格式良好的 PDF 文档,可以根据需要保存或共享。

Jacob Mellor,Team Iron 的首席技术官
首席技术官

Jacob Mellor 是 Iron Software 的首席技术官,是 C# PDF 技术的先锋工程师。作为 Iron Software 核心代码库的原始开发者,自公司成立以来,他就塑造了公司的产品架构,并与首席执行官 Cameron Rimington 一起将其转变成一家公司,拥有50多人,服务于 NASA、特斯拉和全球政府机构。

Jacob 拥有曼彻斯特大学 (1998-2001) 的一级荣誉土木工程学士学位。1999 年在伦敦创办了自己的第一家软件公司,并于 2005 年创建了他的第一个 .NET 组件后,他专注于解决微软生态系统中的复杂问题。

他的旗舰 IronPDF 和 Iron Suite .NET 库在全球已获得超过 3000 万次的 NuGet 安装,其基础代码继续为全球使用的开发者工具提供支持。拥有 25 年商业经验和 41 年编程经验的 Jacob 仍专注于推动企业级 C#、Java 和 Python PDF 技术的创新,同时指导下一代技术领导者。