当前位置:首页 > 数据库 > 正文

.net.怎么连接数据库

. NET 连接数据库需先引入命名空间,创建 SqlConnection 对象并配置连接字符串,最后调用 Open 方法建立连接

在 .NET 开发中,数据库连接是实现数据存储、查询和操作的核心步骤,以下是关于 .NET 连接数据库的详细指南,涵盖基础概念、主流数据库实现方式及代码示例。

数据库连接基础概念

  1. ADO.NET 与 EF Core

    .net.怎么连接数据库 第1张

    • ADO.NET:提供底层数据库操作能力,通过 SqlConnection(SQL Server)、MySqlConnection(MySQL)等类实现连接。
    • Entity Framework Core(EF Core):基于 ORM 的高层框架,通过定义实体类和 DbContext 简化数据操作。
  2. 连接字符串

    用于指定数据库类型、服务器地址、认证方式等信息,格式因数据库而异,

    • SQL Server: Server=localhost;Database=Test;User Id=sa;Password=123456;
    • MySQL: Server=localhost;Database=test;Uid=root;Pwd=123456;


常见数据库连接实现

数据库类型 关键 NuGet 包 示例连接字符串
SQL Server System.Data.SqlClient Server=localhost;Database=Test;User Id=sa;Password=123456;
MySQL MySql.Data Server=localhost;Database=test;Uid=root;Pwd=123456;CharSet=utf8;
PostgreSQL Npgsql Host=localhost;Database=test;Username=postgres;Password=123456;
SQLite System.Data.SQLite Data Source=test.db;Version=3;
Oracle Oracle.ManagedDataAccess User Id=admin;Password=123456;Data Source=localhost:1521/orclpdb;


ADO.NET 连接数据库步骤与代码示例

添加依赖

通过 NuGet 安装对应数据库的驱动包,SQL Server 的 System.Data.SqlClient。

.net.怎么连接数据库 第2张

编写连接代码

using System; using System.Data.SqlClient; class Program { static void Main() { // 定义连接字符串 string connectionString = "Server=localhost;Database=Test;User Id=sa;Password=123456;"; // 创建连接对象 using (SqlConnection connection = new SqlConnection(connectionString)) { try { // 打开连接 connection.Open(); Console.WriteLine("数据库连接成功!"); // 执行 SQL 命令(示例) string query = "SELECT FROM Users"; using (SqlCommand command = new SqlCommand(query, connection)) { using (var reader = command.ExecuteReader()) { while (reader.Read()) { Console.Write(reader["Id"] + "t"); Console.WriteLine(reader["Name"]); } } } } catch (SqlException ex) { Console.WriteLine("数据库连接错误:" + ex.Message); } } // 自动关闭连接 } }

关键点解析

  • using 语句:确保连接和命令对象在使用后自动释放资源。
  • 异常处理:通过 try-catch 捕获 SqlException,处理连接失败或 SQL 错误。
  • 连接池:默认启用连接池,可通过 Max Pool Size 参数优化性能。


Entity Framework Core 连接方法

配置 DbContext

// 导入包:Microsoft.EntityFrameworkCore.SqlServer using Microsoft.EntityFrameworkCore; public class AppDbContext : DbContext { public DbSet<User> Users { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder options) { // 读取连接字符串(推荐从配置文件获取) options.UseSqlServer("Server=localhost;Database=Test;User Id=sa;Password=123456;"); } } public class User { public int Id { get; set; } public string Name { get; set; } }

使用依赖载入

// 在 Program.cs 中配置服务 var builder = WebApplication.CreateBuilder(args); builder.Services.AddDbContext<AppDbContext>(options => options.UseSqlServer("Server=localhost;Database=Test;User Id=sa;Password=123456;")); // 在控制器或服务中使用 var dbContext = builder.Services.BuildServiceProvider().GetRequiredService<AppDbContext>(); var users = dbContext.Users.ToList();


连接字符串管理与安全

  1. 配置文件存储

    将连接字符串写入 appsettings.json,并通过 Configuration 加载:

    代码中读取:

    .net.怎么连接数据库 第3张

  2. 环境变量与密钥管理

    • 生产环境中避免明文存储密码,可使用环境变量(如 DB_PASSWORD)或密钥库。
    • 示例:options.UseSqlServer(Environment.GetEnvironmentVariable("DB_CONNECTION_STRING"));
    • 错误处理与优化

      问题 解决方案
      连接超时 设置 ConnectTimeout(单位秒),ConnectTimeout=30;
      并发连接过多 调整 Max Pool Size(默认 100),如 Max Pool Size=50;
      权限不足 检查数据库用户权限,确保具备目标数据库的读写权限。
      SSL 证书错误(远程连接) 在连接字符串中启用加密:Encrypt=true;TrustServerCertificate=false;


      FAQs

      什么是连接池,如何配置?

      连接池通过复用物理连接减少频繁创建/销毁的开销,关键参数包括:

      • Max Pool Size:最大连接数(默认 100)。
      • Min Pool Size:初始化时创建的最小连接数(默认 0)。

        示例:Min Pool Size=10;Max Pool Size=50;

      如何保护连接字符串中的敏感信息?

      • 配置文件加密:使用工具对 appsettings.json 中敏感字段加密。
      • 环境变量:将连接字符串拆分为多段,分别存储于环境变量中。
      • 密钥管理服务:如 Azure Key Vault

NET
0