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

相关推荐

  • RackNerd端午促销VPS真的便宜吗,美国便宜VPS推荐

    RackNerd在2024年端午节推出的美国VPS促销活动中,纽约、圣何塞等主流机房机型年付价格低至$12.88且续费同价,是预算有限用户搭建个人博客或轻量级应用的极佳选择,RackNerd 2024端午促销核心权益解析在服务器租赁市场,价格波动是常态,但像RackNerd这样在特定节日提供“续费同价”政策的厂……

    2026年6月30日
    900
  • HostMaze VPS测评,HostMaze VPS怎么样,HostMaze VPS测评

    HostMaze VPS以1.62欧元/月的极致性价比,凭借基于NVMe SSD的高性能存储与稳定的国际网络节点,成为2026年预算有限但追求基础性能的小白站长及轻量级应用开发者的首选入门级VPS方案,在云计算市场竞争白热化的2026年,HostMaze凭借“低价不低配”的策略,在独立服务器与VPS领域占据了一……

    2026年5月12日
    4900
  • 服务器cpu满负载怎么办,服务器cpu跑满是什么原因

    服务器CPU满负载通常源于业务高峰期的正常并发、代码逻辑缺陷、恶意攻击或资源配置不当,解决这一问题的核心策略在于“监控定位-应急止损-优化根治”的三步走原则,而非盲目升级硬件,通过精准定位进程、优化应用程序逻辑、调整系统内核参数以及构建高可用架构,绝大多数CPU高负载问题均可被有效化解,从而保障业务的连续性与稳……

    2026年3月30日
    10600
  • AIoT战略发展如何落地?AIoT未来发展趋势与前景

    AIoT(人工智能物联网)战略的核心在于从“连接”转向“智能”,通过边缘计算与云端协同,实现设备间的自主决策与数据价值最大化,这是企业构建未来竞争力的关键路径,过去十年,物联网解决了“万物互联”的问题,让设备能说话;而当下的AIoT战略,重点在于让设备能思考,对于企业而言,这不再仅仅是硬件的升级,而是业务逻辑的……

    2026年6月13日
    4500
  • AIoT的正确姿势是什么,AIoT怎么玩才正确

    AIoT产业的爆发并非单纯的技术堆砌,而是场景价值与技术能力的精准匹配,核心结论在于:AIoT的正确姿势,必须从“连接优先”转向“价值为王”,通过端边云协同计算、数据闭环运营以及生态开放合作,构建能够自我进化的智能生态系统, 企业若仅仅停留在设备联网阶段,终将陷入同质化竞争的红海;唯有深耕垂直场景,实现数据驱动……

    2026年3月19日
    10200
  • 如何将aspx文件转为xls格式?Excel转换工具快速解决

    将ASPX网页数据高效转换为XLS文件的专业指南核心解决方案概述: 将ASPX动态网页内容转换为XLS(Excel)格式的核心在于精准提取数据并保持结构化与格式,主要方法包括:1) 利用浏览器手动另存为;2) 编写脚本自动化抓取与转换;3) 使用专业转换软件;4) 后端代码直接输出Excel流;5) 依赖可靠的……

    程序编程 2026年2月7日
    9600
  • 服务器ECS流出带宽占满怎么办?ecs流出带宽占满原因及解决方法

    当服务器 ECS 流出带宽占满时,网站响应延迟飙升、用户流失率激增,甚至引发服务中断——这是高并发业务中最常见也最危险的性能瓶颈之一,若不及时干预,不仅影响用户体验,更可能导致订单丢失、品牌声誉受损及云成本异常增长,本文基于真实运维案例与阿里云/腾讯云平台数据,系统梳理其成因、识别方法与可落地的优化策略,为何……

    2026年4月14日
    5800
  • AI人工智能机器人客服哪家好,智能客服系统多少钱

    ai人工智能机器人客服代表了客户服务从劳动密集型向智能驱动型转变的范式转变,其核心结论在于,它不仅是降低成本的工具,更是通过全天候即时响应、精准意图识别及数据闭环赋能,重塑企业与用户连接的战略枢纽,成功的实施依赖于将技术深度与业务场景紧密结合,构建“人机协同”的混合服务模式,从而在提升客户满意度的同时,将服务数……

    2026年2月28日
    11700
  • AIPL推荐是什么意思?AIPL模型如何助力品牌营销增长?

    在数字化营销的深水区,流量红利见顶已成为行业共识,品牌增长的核心逻辑已从单纯的流量获取转向流量价值的深度挖掘,AIPL模型作为链接消费者与品牌关系的核心框架,其本质是构建一个从认知到忠诚的全链路转化漏斗,而实施精准的AIPL推荐策略,则是提升营销效率、实现品效合一的关键路径, 通过数据驱动的内容分发与人群运营……

    2026年3月9日
    10800
  • 美国Cloudcone VPS测评,10美元/年方案实测对比,美国VPS哪个性价比高

    CloudCone 10美元/年方案在2026年仍具备极高的性价比,适合预算敏感型个人开发者、博客站点及轻量级测试环境,但在高并发与数据持久性要求上存在明显短板,不建议用于核心生产业务, 方案核心配置与价格深度解析在2026年的VPS市场中,CloudCone以其“无限流量”和“超低价入门”策略依然占据一席之地……

    2026年5月15日
    4600

发表回复

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

评论列表(3条)

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

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

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

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

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

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