C#怎么连接PostgreSQL数据库 C#使用Npgsql驱动教程

来源:这里教程网 时间:2026-02-21 17:34:53 作者:

用 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;
<p>string connString = "Host=localhost;Port=5432;Database=testdb;Username=appuser;Password=123456;";
using var conn = new NpgsqlConnection(connString);
conn.Open();</p><p>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 可进一步提升开发效率。不复杂但容易忽略细节——尤其连接字符串和权限配置。

相关推荐