如何编写ASP.NET数据库查询代码?C实现示例详解

在 ASP.NET 中执行数据库查询有多种方式,以下是常见的几种方法及代码示例:

asp.net数据库查询代码

使用 ADO.NET(原生数据库访问)

// 连接字符串(通常放在Web.config中)
string connectionString = "Server=.;Database=YourDB;Integrated Security=True;";
using (SqlConnection conn = new SqlConnection(connectionString))
{
    string query = "SELECT * FROM Users WHERE Age > @Age";
    SqlCommand cmd = new SqlCommand(query, conn);
    cmd.Parameters.AddWithValue("@Age", 18);
    conn.Open();
    SqlDataReader reader = cmd.ExecuteReader();
    while (reader.Read())
    {
        string name = reader["Name"].ToString();
        int age = Convert.ToInt32(reader["Age"]);
        // 处理数据...
    }
    reader.Close();
}

使用 Entity Framework Core(ORM)

安装 NuGet 包:

  • Microsoft.EntityFrameworkCore.SqlServer
  • Microsoft.EntityFrameworkCore.Design
// 定义实体类
public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}
// DbContext类
public class AppDbContext : DbContext
{
    public DbSet<User> Users { get; set; }
    protected override void OnConfiguring(DbContextOptionsBuilder options)
        => options.UseSqlServer("Server=.;Database=YourDB;Integrated Security=True;");
}
// 在Controller或服务中使用
using (var context = new AppDbContext())
{
    // 查询所有年龄大于18的用户
    var users = context.Users
                .Where(u => u.Age > 18)
                .ToList();
    // 异步查询示例
    var usersAsync = await context.Users
                         .Where(u => u.Name.Contains("John"))
                         .ToListAsync();
}

使用 Dapper(轻量级ORM)

安装 NuGet 包: Dapper

asp.net数据库查询代码

using Dapper;
string connectionString = "Server=.;Database=YourDB;Integrated Security=True;";
using (SqlConnection conn = new SqlConnection(connectionString))
{
    // 简单查询
    var users = conn.Query<User>("SELECT * FROM Users WHERE Country = @Country", 
                  new { Country = "USA" });
    // 多参数查询
    var filteredUsers = conn.Query<User>(
        "SELECT * FROM Users WHERE Age > @MinAge AND Active = @IsActive",
        new { MinAge = 21, IsActive = true }
    );
}

参数化查询(防止SQL注入)

// ADO.NET 参数化
cmd.Parameters.AddWithValue("@param", value);
// EF Core 自动参数化
var user = context.Users.FirstOrDefault(u => u.Email == email);
// Dapper 参数化(如上例)

最佳实践建议:

  1. 连接管理:始终使用 using 语句确保连接关闭
  2. 配置分离:将连接字符串存储在 appsettings.jsonWeb.config
    // appsettings.json
    "ConnectionStrings": {
      "DefaultConnection": "Server=.;Database=MyDB;Trusted_Connection=True;"
    }
  3. 异步操作:在高并发场景使用异步方法(ExecuteReaderAsync, ToListAsync
  4. 错误处理:添加 try-catch 处理数据库异常

Web.config 连接字符串配置示例

<configuration>
  <connectionStrings>
    <add name="MyDB" 
         connectionString="Server=.;Database=YourDB;Integrated Security=True;" 
         providerName="System.Data.SqlClient"/>
  </connectionStrings>
</configuration>

在代码中获取配置的连接字符串

// ASP.NET Core
string connString = Configuration.GetConnectionString("MyDB");
// ASP.NET Framework
string connString = WebConfigurationManager.ConnectionStrings["MyDB"].ConnectionString;

选择方案的建议:

  • 需要高性能/简单查询 → Dapper
  • 需要复杂业务逻辑/领域驱动 → Entity Framework Core
  • 需要完全控制SQL → ADO.NET

根据您的项目规模和团队熟悉度选择合适的数据库访问方式。

asp.net数据库查询代码

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

(0)
上一篇 2026年2月10日 02:05
下一篇 2026年2月10日 02:14

相关推荐

  • mysql-bin.000020文件可以删除吗?

      最近小编在给客户处理网站的时候,客户说磁盘中没用无故就沾满了,于是我上去看了下,最多的也就是个网站备份,不过备份数据也才2G多,怎么会满呢? 查询文件目录发现/www…

    2020年3月6日
    02.8K0
  • 自己搭建多节点CDN,中国手球队亚运赛事直播体验如何?

    在互联网时代,内容分发网络(CDN)已成为提升网站访问速度和用户体验的关键技术,随着我国互联网产业的快速发展,越来越多的企业和个人开始尝试搭建自己的多节点CDN,本文将探讨如何自己搭建多节点CDN,并以中国手球队为例,分析其背后的技术优势,什么是多节点CDN?多节点CDN,即分布式内容分发网络,通过在全球范围内……

    2025年12月4日
    0680
  • ASP.NET页面请求处理过程是怎样的?关键步骤与原理全解析

    ASP.NET作为微软推出的企业级Web应用程序框架,其页面请求处理机制是构建高效、稳定Web应用的核心,理解从客户端请求到服务器响应的完整流程,对于优化应用性能、提升用户体验至关重要,本文将系统介绍ASP.NET页面请求处理的各个阶段、关键组件及优化策略,并结合实际案例,为读者提供权威、专业的指导,ASP.N……

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

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

      2026年1月10日
      020
  • 5G时代到来,CDN是否会被淘汰?还需多久?

    随着5G时代的到来,网络速度得到了极大的提升,人们对网络服务的期待也更加高,在这样的背景下,有人提出了一个疑问:5G来了,是不是就不需要CDN(内容分发网络)了呢?本文将对此进行探讨,一:5G网络的优势5G网络的特点5G网络具有高速率、低时延和大连接的特点,据中国工业和信息化部数据,5G网络的峰值下载速度可达1……

    2025年11月7日
    0840

发表回复

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