C#数据库操作:PostgreSQL与MongoDB入门指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:为什么 C# 开发者需要数据库?

任何现代应用程序——从简单的博客到企业级 ERP 系统——都需要存储数据。没有数据库(DB),就无法确保持久存储、快速搜索和数据完整性。对于 C# 开发者来说,能够操作数据库不仅仅是一个加分项,更是一项必备技能。本文将介绍两种流行的数据库管理系统:关系型 PostgreSQL 和文档型 MongoDB。您将学习如何从 .NET 应用程序连接它们并执行基本操作(CRUD)。本文面向初学者,因此我们将从安装逐步讲解到编写第一个可运行的代码。



1. 环境设置与驱动安装

在编写代码之前,您需要安装数据库本身,并向 C# 项目添加相应的 NuGet 包。



1.1. 安装 PostgreSQL 和 MongoDB

  • PostgreSQL:从官方网站 postgresql.org 下载最新版本。安装时请记住端口号(默认 5432)和超级用户 postgres 的密码。
  • MongoDB:从 mongodb.com 下载社区版。将其安装为服务。为了方便,您还可以安装 MongoDB Compass——一个用于查看数据的图形界面。

安装完成后,请确保服务正在运行。要进行检查,请使用命令行(PostgreSQL:psql -U postgres,MongoDB:mongosh)。



1.2. 创建项目并安装包

创建一个 .NET 8 控制台应用程序:

dotnet new console -n DatabaseDemocd DatabaseDemo

现在安装必要的驱动程序:

// For PostgreSQLdotnet add package Npgsql

// For MongoDBdotnet add package MongoDB.Driver

Npgsql 是一个功能齐全的 PostgreSQL .NET 提供程序。MongoDB.Driver 是 MongoDB, Inc. 的官方驱动程序。



2. 在 C# 中操作 PostgreSQL

PostgreSQL 是一种对象关系型数据库管理系统。数据存储在外键关联的表中。为了方便起见,我们将使用 Npgsql 执行原生 SQL 查询,以便您了解连接和执行命令的机制。



2.1. 连接服务器并创建表

首先,通过 psql 或代码创建一个数据库(例如 shopdb)。在代码中,我们将连接到现有数据库。我们来编写一个创建 Products 表的方法:

using Npgsql;

string connectionString = "Host=localhost;Port=5432;Database=shopdb;Username=postgres;Password=your_password";

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

string createTable = @"CREATE TABLE IF NOT EXISTS Products ( Id SERIAL PRIMARY KEY, Name VARCHAR(100) NOT NULL, Price DECIMAL(10,2) NOT NULL, Quantity INT DEFAULT 0);";

using var command = new NpgsqlCommand(createTable, connection);command.ExecuteNonQuery();Console.WriteLine("Table created.");

注意:我们使用 using 来自动关闭连接。SERIAL 类型会自动创建自增字段。



2.2. CRUD 操作(插入、查询、更新、删除)

让我们添加一些产品并在屏幕上显示:

// Inserting datastring insert = "INSERT INTO Products (Name, Price, Quantity) VALUES (@n, @p, @q)";using var cmdInsert = new NpgsqlCommand(insert, connection);cmdInsert.Parameters.AddWithValue("@n", "Laptop");cmdInsert.Parameters.AddWithValue("@p", 79999.99m);cmdInsert.Parameters.AddWithValue("@q", 10);cmdInsert.ExecuteNonQu                

博客

书籍推荐