最推荐使用 Npgsql 驱动连接 PostgreSQL,它专为 .NET 设计、开源高性能、支持 .NET 5+ 和 .NET Framework 4.6.1+;需通过 NuGet 安装,配置正确连接字符串并使用参数化查询防注入。

用 C# 连接 PostgreSQL 最常用、最推荐的方式就是使用 Npgsql —— 它是专为 .NET 设计的开源、高性能、完全兼容的 PostgreSQL 数据库驱动,支持 .NET 5/6/7/8、.NET Framework 4.6.1+ 和 .NET Standard 2.0+。
安装 Npgsql 包
在项目中引入 Npgsql,推荐用 NuGet 包管理器(Visual Studio 或命令行):
- Visual Studio:右键项目 → “管理 NuGet 包” → 搜索 Npgsql → 安装最新稳定版(如 8.x)
- 命令行(.NET CLI):
dotnet add package Npgsql - 若需 Entity Framework Core 支持,额外安装:
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL
配置连接字符串
PostgreSQL 连接字符串格式如下(关键参数要填对):
Host=localhost;Port=5432;Database=mydb;Username=postgres;Password=mypassword;-
Host:数据库服务器地址,本地可写
localhost或127.0.0.1;远程需填实际 IP 或域名 -
Port:默认是
5432,若修改过 PostgreSQL 的postgresql.conf需同步更新 - Database:目标数据库名(需已存在)
- Username/Password:数据库用户凭据,建议不用超级用户(如 postgres),而用最小权限账号
- 可选增强:加
Pooling=true;(默认开启,提高性能)、SSL Mode=Require;(启用 SSL)
基础连接与查询示例
以下是最简可用的同步代码(控制台程序为例):
using Npgsql;string connString = "Host=localhost;Port=5432;Database=testdb;Username=appuser;Password=123456;"; using var conn = new NpgsqlConnection(connString); conn.Open();
using var cmd = new NpgsqlCommand("SELECT version();", conn); var version = cmd.ExecuteScalar(); Console.WriteLine($"PostgreSQL 版本: {version}");
- 务必用
using确保连接和命令对象被正确释放 - 执行查询优先用
ExecuteScalar()(单值)、ExecuteReader()(多行结果)、ExecuteNonQuery()(INSERT/UPDATE/DELETE) - 涉及用户输入时,**必须使用参数化查询**防止 SQL 注入,例如:
cmd.Parameters.AddWithValue("@name", name);
常见问题快速排查
连不上?先检查这几项:
- PostgreSQL 服务是否运行?在终端执行
sudo systemctl status postgresql(Linux)或查看 Windows 服务 - 用户是否有连接权限?确认
pg_hba.conf中有对应 host 类型的访问规则(如host all all 127.0.0.1/32 md5) - 防火墙是否放行 5432 端口?特别是云服务器(阿里云/腾讯云等)要检查安全组
- 密码错误或数据库不存在会直接抛
NpgsqlException,捕获后打印ex.Message很有帮助 - .NET 6+ 项目若报“找不到引用”,检查是否遗漏
using Npgsql;或目标框架是否兼容(Npgsql 8 要求 .NET 6+)
基本上就这些。Npgsql 上手快、文档全、社区活跃,搭配 Dapper 或 EF Core 可进一步提升开发效率。不复杂但容易忽略细节——尤其连接字符串和权限配置。











