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

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

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

环境准备

  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)
上一篇 2026年2月9日 09:14
下一篇 2026年2月9日 09:17

相关推荐

  • 服务器css文件没生效怎么办,css样式不生效的原因及解决方法

    网站样式错乱、CSS代码无效,通常源于浏览器缓存滞留、服务器MIME类型配置错误、文件路径引用偏差或CSS代码优先级冲突这四大核心因素,解决服务器css文件没生效的问题,必须遵循“由前端至后端、由网络至文件”的排查逻辑,优先清理浏览器缓存并检查HTTP响应头,随后逐步深入排查代码层与服务器配置层,通过系统化的诊……

    2026年4月3日
    5100
  • 服务器ip受到攻击怎么办?服务器被攻击的解决方法

    服务器IP遭受攻击意味着业务连续性面临严峻挑战,必须立即启动应急响应机制,通过流量清洗、系统加固及高防部署恢复服务,并构建长效防御体系以规避潜在风险,面对日益复杂的网络威胁,单纯的被动防御已不足以应对,建立主动监测与快速处置能力是保障服务器安全的核心策略,攻击类型深度剖析与即时影响当服务器ip受到攻击时,业务中……

    2026年4月5日
    4400
  • HostiggerVPS测评,99美元/年方案实测对比,HostiggerVPS测评怎么样?

    Hostigger VPS 99美元/年方案在2026年仍具备极高的性价比,适合预算有限但追求稳定性的个人开发者及小型企业,其核心优势在于性价比与基础性能的平衡,但在高并发场景下略逊于一线大厂旗舰产品,在云计算市场高度内卷的2026年,VPS(虚拟专用服务器)的选择不再仅仅关乎价格,更关乎数据安全性、网络稳定性……

    2026年5月16日
    2100
  • AI智能音箱原理是什么,它是如何实现语音交互的?

    AI智能音响作为现代智能家居生态的核心入口,其本质是一个集成了先进声学硬件、边缘计算节点与云端大数据服务的智能终端系统,它通过将模拟声波转化为数字信号,再经由复杂的算法模型解析人类意图,最终实现人机交互与设备控制,这一过程并非单一技术的应用,而是声学、人工智能与物联网技术的深度融合,构成了从感知到认知再到执行的……

    2026年2月27日
    11700
  • ASP实现注册界面时,如何确保安全性与用户体验的平衡?

    在构建网站用户系统时,使用ASP(Active Server Pages)开发注册界面是高效可靠的解决方案,ASP作为微软推出的服务器端脚本技术,能无缝处理表单数据、执行数据库操作并生成动态响应,以下是专业级实现方案:注册界面核心四要素前端表单设计<form method="post&quot……

    2026年2月5日
    9000
  • 如何用ASP.NET小技巧提升开发效率?精选ASP.NET实战案例分享

    在ASP.NET开发中,掌握常用小技巧能大幅提升应用性能、安全性和开发效率,以下基于实际项目经验,分享专业实用的技巧,覆盖核心场景如性能优化、安全防护、调试维护等,每个技巧均提供独立见解和解决方案,确保遵循E-E-A-T原则,让开发更顺畅,性能优化技巧ASP.NET应用常因资源瓶颈导致响应延迟,核心技巧包括利用……

    2026年2月11日
    9400
  • 广州防水人脸识别闸机生产厂家哪家好?防水人脸识别闸机怎么选

    2026年选购广州防水人脸识别闸机生产厂家,首选具备公安部检测认证、IP68级防水实测达标且拥有大型智慧园区落地案例的源头工厂,以确保设备在极端暴雨下稳定运行并降低30%以上全生命周期成本,为何2026年广州防水人脸识别闸机更看重“极限环境”实战力岭南气候倒逼硬件技术升级珠三角地区年均降雨量超1800毫米,伴随……

    2026年4月25日
    3500
  • 广州稳定cdn高防租用价格?高防CDN一年多少钱

    2026年广州稳定CDN高防租用价格主要集中在8000元至15万元/月区间,基础百G防护约8000元起,T级独享定制方案则需5万元以上,最终报价取决于清洗带宽、QPS并发及节点调度策略,2026年广州CDN高防租用价格深度拆解影响定价的核心成本维度租用价格并非空穴来风,其背后由硬性资源与软性调度双重成本支撑:清……

    2026年4月29日
    3300
  • AIoT智慧园区排名哪家好?2026年智慧园区十大品牌排行榜

    AIoT智慧园区的建设成效已不再单纯依赖硬件堆砌,而是取决于数据融合深度与场景化应用能力,当前行业排名靠前的园区,核心共性在于实现了从“单点智能”向“全场景智慧”的跨越,其评价标准已重构为“联接密度+算力精度+体验温度”的三维模型, 真正具备行业标杆地位的智慧园区,必须具备高度的自进化能力,能够通过AIoT技术……

    2026年3月16日
    9000
  • 服务器ecs怎么删除,阿里云ECS服务器删除步骤详解

    删除ECS服务器并非简单的“卸载”操作,而是一项涉及数据安全、资源释放及费用结算的严谨流程,核心结论是:确保数据已完整备份,通过正确的“释放”或“退订”流程操作,并彻底清除关联资源以避免持续计费, 许多用户误以为停止运行即可停止计费,这是导致资源浪费的最大误区,执行删除操作前,必须明确“停止”与“释放”的本质区……

    2026年3月31日
    5700

发表回复

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

评论列表(3条)

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

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

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

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

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

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