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/aspnet%e8%bf%9e%e6%8e%a5sql%e6%95%b0%e6%8d%ae%e5%ba%93%e7%9a%84%e7%ae%80%e5%8d%95%e5%ae%9e%e4%be%8b%e4%bb%a3%e7%a0%81/

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

相关推荐

  • 华为H58m服务器装系统难吗,安装步骤详解

    华为服务器H58m安装系统,核心路径是“先通过iBMC远程挂载ISO或U盘启动,再配置RAID和启动模式,最后安装系统并补齐驱动”,不要一上来就插U盘硬装, 把顺序理清,H58m装系统并不复杂,难点主要在RAID卡、启动模式和驱动识别,华为服务器H58m安装系统,先抓住三条主线H58m属于服务器思路,不是普通台……

    程序编程 2026年11月4日
    100
  • Windows服务器怎么装禅道,禅道安装详细步骤

    禅道装在Windows服务器上的核心答案是:直接用官方提供的Windows一键集成安装包,解压后点启动就能用,这是目前主流且最稳妥的方式,很多没有专职运维的小团队,公司服务器清一色Windows Server,想上禅道又怕环境配置太硬核,其实这事没那么玄乎,官方早就做好了适合Windows环境的压缩包,你只需要……

    2026年10月17日
    000
  • ASP.NET窗体间传值有哪些高效且实用的方法?哪种方式最适合你的项目需求?

    在ASP.NET Web Forms应用程序中,窗体(页面)间传递数据是构建交互式、数据驱动的Web应用的核心需求,ASP.NET Web Forms 提供了多种窗体间传值的方法,核心包括:QueryString、Session、Cookie、Application 对象以及跨页提交(Cross-Page Po……

    2026年2月5日
    10030
  • AIoT智慧社区有哪些典型应用场景?智慧社区建设方案

    AIoT智慧社区通过物联网设备与人工智能算法的深度融合,实现了从被动管理到主动服务的转变,显著提升了居住安全性、生活便利性及能源利用效率,是未来社区建设的标准配置,想象一下,清晨你还未完全清醒,窗帘已根据光线自动缓缓拉开,咖啡机开始预热,而社区的安防系统早已在夜间完成了对每一处角落的巡检,没有任何异常,这并非科……

    程序编程 2026年6月12日
    4100
  • 我的世界服务器怎么卡无限附魔bug,附魔指令有哪些?

    服务器里的无限附魔,本质上是利用附魔机制与服务器数据校验之间的时间差或逻辑漏洞,让同一件装备叠加超出原版上限的附魔属性,操作核心在于铁砧的合成顺序与服务器重启时的数据回滚,在很多生存服务器里,一把带有锋利V、击退II的钻石剑并不稀奇,但如果有人掏出一把同时带有锋利X、亡灵杀手X、节肢杀手X、火焰附加II、抢夺I……

    2026年9月27日
    100
  • pubg手游维护中怎么办,进不去游戏如何解决?

    先确认是官方计划内维护还是你本地网络问题,然后按“查公告—换线路—等补偿”三步走,绝大多数情况下你只需要安静等待,维护结束后重新登录即可,账号数据不会丢,服务器正在维护,本质上是运营方在给你的游戏世界做“闭店检修”,这件事没法用技术手段强行绕过,但你可以把损失降到最低——少试几次无效登录,少清一次游戏缓存,该拿……

    2026年10月16日
    200
  • 服务器gpu卡有什么用?服务器gpu卡性能排行榜推荐

    服务器GPU卡是驱动现代数据中心、人工智能和高性能计算的核心引擎,其性能直接决定了业务处理效率与算力产出的上限,在当前算力紧缺与技术迭代加速的背景下,选择适配的GPU卡不仅是硬件采购问题,更是企业构建核心竞争力的战略决策,核心结论在于:选型必须基于实际负载场景进行精准匹配,在算力、显存带宽与互联技术之间寻找最优……

    2026年4月5日
    10800
  • 如何更新本地域名解析?本地域名解析修改方法

    更新本地域名解析最直接有效的方法是通过命令行执行ipconfig /flushdns(Windows)或sudo dscacheutil -flushcache(macOS),这能强制清除系统缓存,确保浏览器读取最新的IP地址,很多时候,当你修改了服务器的DNS记录,或者更换了网站的托管服务商后,发现本地电脑依……

    2026年5月27日
    4100
  • RackNerd年付10.18美元VPS靠谱吗?美国便宜VPS推荐

    RackNerd推出的两款年付仅10.18美元的美国VPS,不仅续费价格保持一致,还允许用户通过控制面板自助更换IP,是预算有限且追求稳定性的用户的高性价比选择,在云计算市场日益内卷的当下,寻找一款既便宜又稳定的服务器并非易事,许多用户被高昂的初期流量费或复杂的续费规则劝退,而RackNerd近期推出的两款年付……

    2026年6月30日
    1600
  • 泰拉瑞亚服务器IP地址手机怎么查看,泰拉瑞亚联机地址在哪里看

    在手机上查看《泰拉瑞亚》服务器IP地址,核心方法就是先进入游戏主菜单点“多人游戏”,再选择“加入”,此时屏幕底部会直接显示输入IP的窗口——你把自己设备的IP地址填进去,就能作为房主开房间,这个操作对安卓和iOS都适用,但很多人分不清“设备IP”和“外网IP”的区别,下文详细拆解,手机版《泰拉瑞亚》IP地址在哪……

    2026年9月14日
    300

发表回复

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

评论列表(3条)

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

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

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

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

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

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