ASP.NET如何连接SQL数据库?完整访问教程步骤详解

在 ASP.NET 中访问数据库有多种方式,以下是几种主流方法和详细步骤(以 SQL Server 为例):

asp.net怎样访问数据库


ADO.NET(底层直接访问)

核心步骤:

  1. 添加命名空间

    using System.Data.SqlClient;  // .NET Framework
    // 或
    using Microsoft.Data.SqlClient; // .NET Core+ (推荐)
  2. 配置连接字符串

    • Web.config (ASP.NET) 或 appsettings.json (ASP.NET Core) 中添加:
      <!-- Web.config -->
      <connectionStrings>
        <add name="MyDb" 
             connectionString="Server=服务器地址;Database=数据库名;User Id=用户名;Password=密码;"
             providerName="System.Data.SqlClient"/>
      </connectionStrings>
      // appsettings.json (.NET Core)
      {
        "ConnectionStrings": {
          "MyDb": "Server=.;Database=MyDB;Integrated Security=True;"
        }
      }
  3. 执行数据库操作

    // 读取数据示例
    string connectionString = ConfigurationManager.ConnectionStrings["MyDb"].ConnectionString;
    // .NET Core: 通过依赖注入获取 IConfiguration,再取 connectionString
    using (SqlConnection conn = new SqlConnection(connectionString))
    {
        string sql = "SELECT * FROM Products";
        SqlCommand cmd = new SqlCommand(sql, conn);
        conn.Open();
        SqlDataReader reader = cmd.ExecuteReader();
        while (reader.Read())
        {
            string productName = reader["ProductName"].ToString();
            // 处理数据...
        }
    }

Entity Framework Core(推荐 ORM)

步骤:

  1. 安装 NuGet 包

    Install-Package Microsoft.EntityFrameworkCore.SqlServer
    Install-Package Microsoft.EntityFrameworkCore.Design
  2. 创建数据模型

    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public decimal Price { get; set; }
    }
  3. 创建 DbContext

    asp.net怎样访问数据库

    public class AppDbContext : DbContext
    {
        public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }
        public DbSet<Product> Products { get; set; }
    }
  4. 配置依赖注入(Startup.cs)

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<AppDbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("MyDb")));
    }
  5. 在控制器中使用

    public class ProductController : Controller
    {
        private readonly AppDbContext _context;
        public ProductController(AppDbContext context)
        {
            _context = context; // 依赖注入
        }
        public IActionResult Index()
        {
            var products = _context.Products.ToList();
            return View(products);
        }
    }

Dapper(轻量级 ORM)

步骤:

  1. 安装 NuGet 包

    Install-Package Dapper
    Install-Package System.Data.SqlClient
  2. 执行查询

    using Dapper;
    using System.Data;
    public IEnumerable<Product> GetProducts()
    {
        using (IDbConnection db = new SqlConnection(connectionString))
        {
            return db.Query<Product>("SELECT * FROM Products");
        }
    }

关键注意事项

  1. 安全防护

    • 防 SQL 注入:使用参数化查询(ADO.NET 的 SqlParameter / Dapper 的参数化 / EF Core 的 LINQ)。
      // ADO.NET 参数化示例
      SqlCommand cmd = new SqlCommand("SELECT * FROM Users WHERE Username = @User", conn);
      cmd.Parameters.AddWithValue("@User", userInput);
  2. 连接管理

    asp.net怎样访问数据库

    • 使用 using 语句确保连接关闭(如上文示例)。
  3. 配置管理

    • 不要硬编码连接字符串,始终从配置文件读取。
  4. 异步操作(提升性能)

    // EF Core 异步示例
    var products = await _context.Products.ToListAsync();
    // Dapper 异步示例
    var products = await db.QueryAsync<Product>("SELECT * FROM Products");

各方案对比

方法 优点 适用场景
ADO.NET 高性能,完全控制 SQL 需要精细控制 SQL/存储过程
EF Core 开发快,强类型,迁移支持 快速开发,复杂对象关系
Dapper 高性能,简单易用 读写频繁的轻量级应用

根据项目需求选择合适的技术栈,新项目推荐 EF Core 或 Dapper,遗留系统可使用 ADO.NET。

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/287874.html

(0)
上一篇 2026年2月8日 15:58
下一篇 2026年2月8日 16:01

相关推荐

  • 为何兄弟3150cdn打印机打印颜色不稳定,时有时无,故障原因是什么?

    兄弟3150cdn打印颜色时有时无:兄弟3150cdn打印机在使用过程中,部分用户反馈在打印时出现颜色时有时无的现象,本文将针对这一问题进行分析,并提供相应的解决方法,问题原因分析墨盒问题墨盒是打印机打印色彩的关键部件,当墨盒出现问题时,可能导致打印颜色时有时无,以下为几种可能的情况:(1)墨盒已用尽:墨盒内的……

    2025年11月25日
    01930
  • 光纤存储器是什么?光纤存储器价格及厂家

    光纤存储器目前仍处于实验室研发与特定场景验证阶段,尚未实现大规模商业化普及,其核心优势在于超高带宽与抗电磁干扰,但受限于成本与标准缺失,2026 年主要应用于国防军工、超算中心及高端科研领域,普通消费级市场暂无替代方案,技术突破与产业现状技术原理与核心优势光纤存储器(Optical Memory)并非传统意义上……

    2026年5月7日
    0375
  • 光学识别ocr文字处理软件好用吗,ocr文字识别软件哪个最好

    2026 年主流光学识别(OCR)技术已实现 99.2% 以上的复杂场景文字识别准确率,对于需要处理多语言混合、手写体及模糊文档的企业用户,选择基于深度神经网络架构的云端 OCR 服务是兼顾效率与成本的最优解,技术演进:从传统算法到 2026 年智能识别范式核心算法的代际跨越2026 年的 OCR 引擎已彻底告……

    2026年5月9日
    0254
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • aspnet支付中如何确保安全性及高效性?探讨最佳实践与挑战!

    ASP.NET支付解决方案概述随着互联网的普及和电子商务的快速发展,支付系统在网站和应用程序中扮演着至关重要的角色,ASP.NET作为微软开发的一种强大的Web开发框架,提供了多种支付解决方案,以满足不同业务场景的需求,ASP.NET支付概述ASP.NET支付解决方案主要包括以下几种方式:集成第三方支付服务:通……

    2025年12月17日
    01500

发表回复

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