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://test.idctop.com/article/19068.html

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

相关推荐

  • 2026广东有云VPS评测靠谱吗?国内海外云服务器哪家性价比高

    2026年广东有云VPS凭借覆盖香港、洛杉矶及国内多地的优质机房资源,以极具竞争力的价格和稳定的网络连接,成为建站与跨境业务的高性价比首选方案,在云计算市场日益内卷的2026年,选择一款既稳定又便宜的VPS不再仅仅是看参数,更要看机房的实际落地能力和网络质量,广东有云作为国内知名的云服务提供商,其产品线虽然精简……

    2026年7月8日
    16000
  • 服务器价格及配置详情选购时需要注意哪些细节?,怎么选?

    2026年服务器价格及配置的核心结论是:一台满足中小业务需求的云服务器,年预算3000-5000元即可拿下,物理服务器则需1.5万元以上,选型关键在于匹配业务阶段,而非盲目堆参数,服务器价格及配置,2026年主流方案怎么选走进2026年,服务器采购的逻辑和前几年有了明显变化,云服务商掀起的降价潮基本平息,市场回……

    2026年8月20日
    800
  • 手机开发定制需要多少钱?手机app开发定制公司哪家好

    手机开发定制已成为企业在数字化转型中构建核心竞争力的关键战略,其核心价值在于通过专属的功能设计与系统架构,实现商业模式的精准落地与数据资产的完全掌控,而非仅仅获得一款通用的硬件产品,企业选择定制开发路线,本质上是为了打破标准化移动设备的功能桎梏,将硬件能力深度转化为业务效能,从而在激烈的市场竞争中建立起不可复制……

    2026年3月15日
    11600
  • delphi开发activex难吗?delphi开发activex详细教程

    Delphi作为经典的快速应用开发工具,在ActiveX控件开发领域依然保持着极高的效率与稳定性,其核心优势在于可视化开发环境与VCL框架的深度结合,能够以极低的代码成本构建出高性能、跨语言调用的COM组件,对于需要将传统算法或业务逻辑封装供Web、C#或VB调用的场景,Delphi是极具性价比的技术选型,它不……

    2026年3月23日
    11000
  • IPRaftVPS测评怎么样,美国双ISP VPS租用多少钱

    IPRaftVPS凭借美国双ISP架构与低延迟特性,在2026年TikTok多账号矩阵运营场景中表现优异,是兼顾稳定性与合规性的高性价比选择,在2026年的跨境数字营销领域,TikTok账号的隔离与稳定性已成为核心痛点,许多用户仍在寻找能够解决IP关联、封号风险以及网络延迟问题的解决方案,IPRaftVPS通过……

    2026年5月15日
    4800
  • AI物联网平台建设方案有哪些核心步骤?

    2026年AI物联网平台建设的核心在于构建“端-边-云”协同的智能架构,通过标准化协议打通数据孤岛,并利用大模型技术实现从数据采集到自主决策的闭环,从而显著降低运维成本并提升业务响应速度,为什么传统物联网平台在2026年不再适用过去十年,物联网平台主要解决的是“连接”问题,即如何让成千上万的设备在线,但在202……

    2026年6月7日
    3000
  • iOS开发怎么旋转屏幕?iOS屏幕旋转设置全解析

    在iOS开发中,实现屏幕旋转功能是确保应用在不同设备方向上提供流畅用户体验的关键,这主要通过配置应用的设备方向支持、在视图控制器中处理旋转事件以及利用iOS框架的API来实现,以下是详细的开发教程,帮助你一步步掌握这一技术,理解屏幕旋转的基础原理iOS设备支持多种方向,如竖屏(Portrait)和横屏(Land……

    2026年2月14日
    10600
  • 服务器cpu怎么选?服务器CPU性能天梯图排名

    服务器CPU是决定企业级计算性能、数据吞吐能力与业务稳定性的核心硬件,其选型直接决定了IT基础设施的综合效能,核心结论在于:服务器CPU并非家用电脑处理器的简单升级版,而是专为高并发、高负载、长时间稳定运行而设计的计算大脑,选型时必须遵循“性能冗余、扩展优先、能效平衡”三大原则,才能实现TCO(总拥有成本)的最……

    2026年4月4日
    8600
  • win7中的打印机服务器错误怎么解决,win7打印机服务器错误原因是什么

    解决Win7打印机服务器错误,最直接有效的方法是重启Print Spooler服务并清理打印队列,若问题依旧,需检查打印机驱动兼容性或重新添加打印机, 这个核心操作能应对大部分情况,但根据错误代码和共享环境,还需要更细致的排查,下面从服务、队列、驱动和共享四个维度,彻底解决这个报错,win7打印机服务器错误解决……

    2026年7月27日
    500
  • Arkecx云服务器好用吗?俄罗斯莫斯科VPS测评

    Ark Edge Cloud(arkecx)在莫斯科节点的表现稳定,凭借常规国际线路和较低的入门门槛,非常适合对延迟敏感且预算有限的个人开发者或小型项目使用,但在高并发场景下需留意其性价比波动,在云服务器选型中,俄罗斯节点一直是个特殊的存在,对于需要接入独联体市场,或者单纯追求极致性价比的国际用户来说,寻找一个……

    2026年6月18日
    2200

发表回复

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

评论列表(3条)

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

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

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

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

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

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