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

相关推荐

  • 搬瓦工Basic VPS洛杉矶机房网速慢吗?搬瓦工VPS三网回程路由测评

    搬瓦工Basic VPS在洛杉矶机房的表现属于入门级中的稳健选择,适合对延迟敏感但预算有限的个人用户,其$49.99/年的价格性价比极高,但1TB流量限制是主要瓶颈,对于许多刚开始接触海外VPS的用户来说,选择一款既便宜又稳定的服务器并非易事,搬瓦工(BandwagonHost)作为老牌服务商,其Basic套餐……

    2026年7月7日
    7400
  • 美国ablehostingVPS测评,5美元/月方案实测对比,美国VPS测评哪个好用,美国VPS测评

    2026 年实测结论:AbleHosting 5 美元方案在基础建站与轻量级 API 场景下性价比极高,但在高并发 I/O 与全球延迟优化上存在明显短板,仅推荐预算敏感型开发者或特定地域(如北美)用户选择,在 2026 年云原生架构全面普及的背景下,VPS 市场已从单纯的价格竞争转向“性能稳定性与合规性”的双重……

    2026年5月12日
    4100
  • 分布式缓存服务包年如何选择,有哪些优惠?

    对于追求成本可控与性能稳定的企业而言,选择分布式缓存服务的包年付费模式,是降本增效、锁定长期资源的明智决策,为什么说分布式缓存服务包年是“成本定心丸”?在云服务消费中,波动不定的月度账单常常让运维和财务部门头疼,分布式缓存作为支撑高并发访问的核心服务,其资源消耗直接关系到用户体验和业务稳定性,包年付费模式,本质……

    2026年7月16日
    1200
  • 服务器2008内存占用高资源管理器查不到怎么办,如何解决内存泄漏

    面对Windows Server 2008系统内存占用率持续居高不下,而在任务管理器中却无法定位到占用进程的棘手情况,核心结论往往指向系统内核层面的隐性资源消耗,这种现象通常由非分页池内存泄漏、驱动程序错误、系统服务异常或恶意内核模块加载所致,解决此类问题的关键在于跳出任务管理器的局限,转而使用专业的系统诊断工……

    2026年4月5日
    8900
  • DMIT洛杉矶CN2 GIA VPS季付59美元起值得买吗?美国VPS推荐

    DMIT夏季促销推出的洛杉矶CN2 GIA线路VPS,凭借5Gbps大带宽和季付59美元起的极致性价比,是目前搭建海外高速访问节点的首选方案,在服务器选型这个领域,稳定性与速度往往是一对难以兼得的矛盾体,大多数用户为了追求低价,不得不忍受高延迟和丢包率;而为了追求极致速度,又需要支付高昂的费用,DMIT这次夏季……

    2026年6月27日
    1300
  • 灰度流水线如何解耦配置与环境,是什么意思

    灰度流水线要解耦配置与环境,核心做法是把环境特有参数从应用包和部署脚本中剥离,通过配置中心加参数化流水线让同一份制品在不同环境按需加载不同配置,灰度发布配置中心怎么做:先把配置从环境里“请”出来传统部署里,数据库地址、Redis地址、消息队列连接串经常被写死在应用配置文件里,每切一个环境,开发就得改一次配置、重……

    2026年9月10日
    400
  • 果汁工厂存储数据支持与分析有哪些痛点?果汁工厂存储数据支持与分析解决方案

    果汁工厂通过部署边缘计算节点与实时数据中台,将生产数据延迟降低至毫秒级,从而在原料损耗控制、批次追溯及能耗优化上实现显著的成本节约与效率提升,在2026年的制造业语境下,果汁生产线早已不再是简单的物理混合过程,而是一场关于数据流动的精密舞蹈,每一滴橙汁、每一瓶苹果浓缩液背后,都隐藏着成千上万个传感器传回的实时信……

    2026年5月26日
    6900
  • AIoT战略发展如何落地?AIoT未来发展趋势与前景

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

    2026年6月13日
    4700
  • Excel 2007补丁怎么下载安装,Excel 2007怎么更新到最新版本?

    Excel 2007 的核心补丁是 Service Pack 3 (SP3),通过安装该补丁包可以最大限度地提升软件稳定性、修复已知漏洞并增强与后续版本文件的兼容性,为什么你的电脑还需要 Excel 2007 补丁虽然 Office 2007 已经是很多年前的产品,但在一些特定的工业控制软件、旧版财务系统或政企……

    2026年7月12日
    9600
  • AIoT遥控器是什么?智能遥控器怎么连接手机

    AIoT遥控器作为智能家居生态的核心交互入口,其本质已超越传统红外控制器的物理形态,演变为集语音交互、场景感知、边缘计算于一体的智能中枢,核心结论在于:AIoT遥控器的技术革新正在重构家庭控制逻辑,从单一指令执行向主动智能服务跃迁,其技术架构的成熟度直接决定了智能家居系统的用户体验上限,技术架构的三大核心突破多……

    2026年3月12日
    11300

发表回复

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

评论列表(3条)

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

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

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

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

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

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