ASPNET连接SQL数据库的简单实例代码

在ASP.NET Core中连接SQL Server数据库需使用Microsoft.Data.SqlClient库并配置连接字符串,以下是完整实现步骤及最佳实践:

ASPNET连接SQL数据库的简单实例代码

DMA调试安装教程kmbox net调试安装教程
加载中
DMA调试安装教程kmbox net调试安装教程

环境准备

  1. 安装NuGet包:
    Install-Package Microsoft.Data.SqlClient
  2. 配置appsettings.json:
    {
    "ConnectionStrings": {
     "DefaultConnection": "Server=.;Database=MyDB;User Id=sa;Password=YourStrong@Password;TrustServerCertificate=true;"
    }
    }

核心连接代码

using Microsoft.Data.SqlClient;
using Microsoft.Extensions.Configuration;
// 在Startup.cs或Program.cs注入配置
var builder = WebApplication.CreateBuilder(args);
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
// 数据库操作类
public class DatabaseService
{
    public void ExecuteQuery()
    {
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            try
            {
                connection.Open();
                // 执行参数化查询(防SQL注入)
                string sql = "SELECT  FROM Users WHERE Id = @UserId";
                using (SqlCommand command = new SqlCommand(sql, connection))
                {
                    command.Parameters.AddWithValue("@UserId", 1);
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            Console.WriteLine(reader["UserName"]);
                        }
                    }
                }
            }
            catch (SqlException ex)
            {
                // 记录错误到日志系统
                Console.WriteLine($"SQL Error: {ex.Number} - {ex.Message}");
            }
            finally 
            {
                // 连接池自动回收资源
            }
        }
    }
}

关键技术解析

  1. 连接池优化

    • 默认启用连接池(Max Pool Size=100)
    • 使用using语句确保连接及时释放
    • 避免在循环中创建新连接
  2. 安全实践

    ASPNET连接SQL数据库的简单实例代码

    • 连接字符串存储:
      // 生产环境使用Azure Key Vault
      builder.Configuration.AddAzureKeyVault();
    • 始终使用参数化查询
    • 启用加密连接:
      "Encrypt=true;TrustServerCertificate=false;"
  3. 异步操作(高性能场景)

    public async Task<List<User>> GetUsersAsync()
    {
     var users = new List<User>();
     using (var conn = new SqlConnection(connectionString))
     {
         await conn.OpenAsync();
         var command = new SqlCommand("SELECT  FROM Users", conn);
         using (var reader = await command.ExecuteReaderAsync())
         {
             while (await reader.ReadAsync())
             {
                 users.Add(new User {
                     Id = reader.GetInt32(0),
                     Name = reader.GetString(1)
                 });
             }
         }
     }
     return users;
    }

异常处理规范

catch (SqlException ex) when (ex.Number == 4060) // 数据库不可用
{
    // 触发故障转移机制
}
catch (SqlException ex) when (ex.Number == 18456) // 登录失败
{
    // 发送凭证错误警报
}
catch (TimeoutException)
{
    // 启动重试策略
}

企业级部署建议

  1. 连接字符串配置策略:

    // 环境区分配置
    var env = builder.Environment;
    var config = new ConfigurationBuilder()
     .AddJsonFile($"appsettings.{env.EnvironmentName}.json")
     .Build();
  2. 连接健康检查(Kubernetes就绪探针):

    ASPNET连接SQL数据库的简单实例代码

    builder.Services.AddHealthChecks()
     .AddSqlServer(configuration["ConnectionStrings:DefaultConnection"]);

性能监控
在Program.cs启用诊断:

// 记录SQL执行耗时
builder.Services.AddDbContext<AppDbContext>(options => 
    options.UseSqlServer(connectionString)
           .EnableSensitiveDataLogging()
           .LogTo(Console.WriteLine, LogLevel.Information));

深度思考:当连接池达到上限时,如何在不重启应用的情况下动态扩展?建议采用分片连接策略:根据业务模块创建独立连接池,例如将订单业务和用户业务的数据库连接分离配置,通过Application Name标识:

"ConnectionStrings": {
  "OrderDB": "Server=...;Application Name=OrderModule;",
  "UserDB": "Server=...;Application Name=UserModule;"
}

您在实际项目中遇到的数据库连接难题是什么? 欢迎分享具体场景,我们将从架构设计层面分析解决方案,对于高并发场景下的连接泄露问题,是否有更优的实时检测方案?

首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/19068.html

(0)
Java银行接口开发如何确保交易安全高效?| Java银行接口开发实战指南
上一篇 2026年2月9日 09:14
ASP.NET生命周期是什么?详解流程与优化技巧
下一篇 2026年2月9日 09:17

相关推荐

  • AIoT汽车制造商有哪些?AIoT汽车制造商排名前十推荐

    AIoT技术正在根本性地重塑汽车制造业的底层逻辑,未来的汽车制造商将不再仅仅是机械交通工具的生产者,而是智能移动空间的服务商,这一转型的核心在于,通过人工智能(AI)与物联网(IoT)的深度融合,实现从研发、生产到用户体验的全链路智能化,这是车企在激烈的市场竞争中存活并突围的唯一路径,核心结论:智能化转型是生存……

    2026年3月13日
    11800
  • 广州轻量应用服务器怎么添加实例?轻量云服务器如何增加实例

    在广州轻量应用服务器控制台的“实例管理”页面,点击“新建实例”,按需选配地域(广州)、镜像、规格及带宽,确认订单支付后即可完成添加并自动开通,添加实例前的核心规划明确业务场景与地域锁定添加实例绝非无脑点击,需基于业务体量精准选配,根据《2026年中国云计算产业白皮书》数据,华南地区用户访问广州节点的平均延迟低至……

    2026年4月27日
    5400
  • 荷兰ShineServersVPS测评,5美元/月方案实测对比,ShineServersVPS多少钱,VPS服务器推荐

    荷兰 ShineServers VPS 5 美元方案在 2026 年属于入门级高性价比选择,适合个人博客与轻量级应用,但受限于共享带宽与单核性能,不适合高并发或资源密集型业务,在 2026 年云计算市场趋于饱和的背景下,荷兰 ShineServers VPS 凭借阿姆斯特丹节点的地理优势与极具竞争力的定价,成为……

    2026年5月12日
    4600
  • 服务器g6规格有哪些?g6服务器配置参数详解

    服务器G6规格代表了当前企业级计算领域在性能、能效与扩展性之间的黄金平衡点,是支撑云计算、大数据处理及高并发业务场景的理想基础设施基石,其核心价值在于通过架构革新,实现了单位空间内计算密度的跃升,同时大幅降低了总体拥有成本(TCO),能够满足企业数字化转型中对业务敏捷性与稳定性双重提升的严苛要求, 核心计算性能……

    2026年4月11日
    6400
  • 宇视智能交通系统怎么构建?智能交通解决方案有哪些

    宇视智能交通系统通过“云边端”协同架构与AI全量感知技术,实现了从单一视频采集到城市交通大脑决策的闭环,是当前解决城市拥堵与提升通行效率的主流选择,交通管理早已告别了“人海战术”和“事后追责”的粗放时代,现在的城市道路像是一个巨大的有机体,每一辆车、每一个行人、每一次信号灯的变化,都是这个机体的神经脉冲,宇视科……

    程序编程 2026年5月27日
    3900
  • 构建数据仓库实践难吗?数据仓库建设步骤

    构建数据仓库的核心在于建立统一的数据标准与分层架构,通过ETL流程将分散业务数据转化为可复用的资产,从而支撑企业级决策分析,很多企业在起步阶段容易陷入“为了建仓库而建仓库”的误区,导致后期数据难以维护、查询缓慢,数据仓库不是简单的数据库堆砌,而是一套完整的数据治理体系,它需要解决数据孤岛、口径不一、实时性差等痛……

    程序编程 2026年5月25日
    4200
  • HostDareVPS测评,HostDare VPS怎么样?

    HostDare VPS以10.4美元/年的极致性价比,在美国与日本节点上实现了高可用性基础建站需求,适合预算敏感型个人开发者及小型企业,但在高并发场景下性能表现平庸,不建议用于核心业务系统,在2026年的虚拟主机市场中,HostDare凭借其“低价高配”的策略依然占据着长尾流量的一席之地,对于寻求HostDa……

    2026年5月19日
    4200
  • 服务器ecs怎么使用,ecs服务器使用方法和配置指南

    高效、稳定、低成本——现代业务首选的云服务器ECS部署路径已明确:从选型到运维全流程实战指南核心结论:选择阿里云ECS(Elastic Compute Service)是中小企业及开发者实现快速上线、弹性伸缩、安全合规的最优解;关键在于匹配业务场景精准选型、自动化部署、持续监控优化,而非盲目追求高配,选型:按业……

    2026年4月14日
    6100
  • alb绑定eip失败怎么办?alb绑定eip步骤详解

    ALB绑定EIP的核心逻辑是通过将弹性公网IP分配给ALB实例,使其具备直接访问互联网的能力,从而解决内网负载均衡无法直接对外提供服务的问题,这是构建高可用Web架构的关键一步,在云原生架构日益普及的今天,很多开发者在部署应用时都会遇到一个痛点:为什么我的应用部署在VPC内部,用户却访问不了?这通常是因为负载均……

    2026年6月3日
    3800
  • ASP如何获取下一条数据?高效数据库查询技巧

    在ASP中获取下一条数据主要通过对Recordset对象使用MoveNext方法实现,这是处理数据库查询结果集的基础操作,以下是详细的工作原理、最佳实践及解决方案:核心机制:Recordset与游标操作ASP通过ADO (ActiveX Data Objects)访问数据库,查询结果存储在Recordset对象……

    2026年2月7日
    13330

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(3条)

  • 山山731
    山山731 2026年2月16日 00:36

    读了这篇文章,我深有感触。作者对中连接的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!

  • 甜粉5406
    甜粉5406 2026年2月16日 02:23

    这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是中连接部分,给了我很多新的思路。感谢分享这么好的内容!

  • brave806love
    brave806love 2026年2月16日 04:06

    读了这篇文章,我深有感触。作者对中连接的理解非常深刻,论述也很有逻辑性。内容既有理论深度,又有实践指导意义,确实是一篇值得细细品味的好文章。希望作者能继续创作更多优秀的作品!