怎样操作ASP.NET数据库增删改查?| ASP.NET数据库增删改查教程

在ASP.NET中进行数据库的增删改查(CRUD)操作,主要有两种主流方式:ADO.NET(原始数据库访问)和Entity Framework(ORM框架),以下是详细指南:

asp.net数据库的增删改查


ADO.NET 方式(原生SQL操作)

配置数据库连接

Web.config中添加连接字符串:

asp.net数据库的增删改查

<connectionStrings>
  <add name="MyDb" 
       connectionString="Server=.;Database=TestDB;User Id=sa;Password=123456;" 
       providerName="System.Data.SqlClient"/>
</connectionStrings>

创建实体类

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
}

CRUD操作示例

using System.Data;
using System.Data.SqlClient;
using System.Configuration;
public class UserRepository
{
    private string connectionString = ConfigurationManager.ConnectionStrings["MyDb"].ConnectionString;
    // 查询所有用户
    public List<User> GetAllUsers()
    {
        List<User> users = new List<User>();
        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            string sql = "SELECT Id, Name, Email FROM Users";
            SqlCommand cmd = new SqlCommand(sql, conn);
            conn.Open();
            SqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                users.Add(new User()
                {
                    Id = Convert.ToInt32(reader["Id"]),
                    Name = reader["Name"].ToString(),
                    Email = reader["Email"].ToString()
                });
            }
        }
        return users;
    }
    // 新增用户
    public void AddUser(User user)
    {
        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            string sql = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)";
            SqlCommand cmd = new SqlCommand(sql, conn);
            cmd.Parameters.AddWithValue("@Name", user.Name);
            cmd.Parameters.AddWithValue("@Email", user.Email);
            conn.Open();
            cmd.ExecuteNonQuery();
        }
    }
    // 更新用户
    public void UpdateUser(User user)
    {
        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            string sql = "UPDATE Users SET Name=@Name, Email=@Email WHERE Id=@Id";
            SqlCommand cmd = new SqlCommand(sql, conn);
            cmd.Parameters.AddWithValue("@Id", user.Id);
            cmd.Parameters.AddWithValue("@Name", user.Name);
            cmd.Parameters.AddWithValue("@Email", user.Email);
            conn.Open();
            cmd.ExecuteNonQuery();
        }
    }
    // 删除用户
    public void DeleteUser(int id)
    {
        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            string sql = "DELETE FROM Users WHERE Id=@Id";
            SqlCommand cmd = new SqlCommand(sql, conn);
            cmd.Parameters.AddWithValue("@Id", id);
            conn.Open();
            cmd.ExecuteNonQuery();
        }
    }
}

Entity Framework Core 方式(推荐)

安装NuGet包

  • Microsoft.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.SqlServer

创建DbContext

public class AppDbContext : DbContext
{
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }
    public DbSet<User> Users { get; set; }
}

配置依赖注入(Startup.cs)

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<AppDbContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("MyDb")));
}

CRUD操作示例

public class UserService
{
    private readonly AppDbContext _context;
    public UserService(AppDbContext context)
    {
        _context = context; // 依赖注入DbContext
    }
    // 查询所有用户
    public List<User> GetAllUsers() => _context.Users.ToList();
    // 新增用户
    public void AddUser(User user)
    {
        _context.Users.Add(user);
        _context.SaveChanges();
    }
    // 更新用户
    public void UpdateUser(User user)
    {
        _context.Users.Update(user);
        _context.SaveChanges();
    }
    // 删除用户
    public void DeleteUser(int id)
    {
        var user = _context.Users.Find(id);
        if (user != null)
        {
            _context.Users.Remove(user);
            _context.SaveChanges();
        }
    }
}

在Controller中使用(ASP.NET Core MVC示例)

public class UserController : Controller
{
    private readonly UserService _userService;
    public UserController(UserService userService)
    {
        _userService = userService;
    }
    // GET: /User
    public IActionResult Index()
    {
        var users = _userService.GetAllUsers();
        return View(users);
    }
    // POST: /User/Create
    [HttpPost]
    public IActionResult Create(User user)
    {
        if (ModelState.IsValid)
        {
            _userService.AddUser(user);
            return RedirectToAction("Index");
        }
        return View(user);
    }
    // POST: /User/Delete/5
    [HttpPost]
    public IActionResult Delete(int id)
    {
        _userService.DeleteUser(id);
        return RedirectToAction("Index");
    }
}

关键注意事项

  1. 参数化查询:ADO.NET中必须使用Parameters防止SQL注入
  2. 连接管理:使用using确保连接及时释放
  3. 异步操作:EF Core支持async/await(如 ToListAsync()
  4. 事务处理
    using (var transaction = _context.Database.BeginTransaction())
    {
      try {
        // 多个操作
        transaction.Commit();
      } catch {
        transaction.Rollback();
      }
    }

两种方式对比

特性 ADO.NET Entity Framework Core
开发速度 慢(需手写SQL) 快(自动生成SQL)
安全性 需手动参数化 自动参数化
维护性 低(SQL与代码混合) 高(面向对象)
性能 极高(精细控制) 良好(满足大部分场景)
适用场景 高性能需求、复杂SQL、遗留系统 快速开发、业务系统、代码优先

根据项目需求选择合适的方式:追求开发效率选EF Core,追求极致性能或需复杂SQL优化选ADO.NET。

asp.net数据库的增删改查

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

(0)
上一篇 2026年2月7日 19:52
下一篇 2026年2月7日 19:59

相关推荐

  • 如何在ASP.NET中正确应用DetailsView控件?详细使用步骤与技巧揭秘

    在ASP.NET中,DetailsView控件是一个强大的数据绑定控件,用于显示、编辑和删除数据表中的行,以下将详细介绍DetailsView的使用方法,包括其基本属性、事件和方法,DetailsView基本概念DetailsView控件通常与数据源绑定,如数据库表或数据集,它允许用户查看和编辑数据表中的单个记……

    2025年12月23日
    01070
  • 如何通过CDN跑流量实现一个月高额利润?揭秘成功秘诀!

    随着互联网的快速发展,内容分发网络(CDN)已成为提高网站访问速度、优化用户体验的关键技术,本文将深入探讨CDN跑流量一个月的利润情况,帮助您了解这一领域的盈利潜力,分发网络,是一种通过在全球范围内部署多个节点,将网站内容缓存到这些节点上,当用户访问时,从最近的服务器获取内容,从而提高访问速度和用户体验的技术……

    2025年11月30日
    02730
  • 公众号搭建服务器需要哪些步骤?公众号搭建服务器详细教程

    高效、安全、低成本的实战指南核心结论: 搭建公众号服务器绝非简单“买台云主机”即可,必须以“高可用、低延迟、强安全、易运维”为四大核心原则,结合业务规模动态选型,本文基于酷番云服务3000+微信生态客户的实战经验,提供一套经验证的分阶段建设方案——从轻量起步到企业级高可用架构,兼顾技术可行性与商业可持续性,为什……

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

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

      2026年1月10日
      020
  • 立思辰GB3731CDN打印机纸盒,为何纸张装载易出问题?

    立思辰GB3731CDN打印机纸盒:高效办公的得力助手产品简介立思辰GB3731CDN打印机纸盒,是专为立思辰GB3731CDN打印机设计的高品质纸盒,它采用优质材料制作,具有良好的耐用性和稳定性,能够有效提升打印机的使用效率和办公体验,产品特点优质材料立思辰GB3731CDN打印机纸盒采用环保材料制作,无毒无……

    2025年11月8日
    01600

发表回复

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

评论列表(5条)

  • 酷狗2598的头像
    酷狗2598 2026年2月15日 09:22

    这篇文章讲ASP.NET数据库操作真清楚!ADO.NET虽然原始点但灵活,Entity Framework用起来省事多了,开发速度快不少。实际项目里我常用EF,感觉上手容易多了。感谢分享!

  • 大小7979的头像
    大小7979 2026年2月15日 09:46

    这篇文章讲得真清楚!我之前用ADO.NET手动写SQL有点麻烦,后来换成Entity Framework后开发速度快多了,代码也更简洁。对新入门的朋友来说,EF可能更友好些,推荐试试看。

  • 大robot816的头像
    大robot816 2026年2月15日 10:04

    哈哈,这篇文章讲ASP.NET数据库增删改查的操作,还挺实用的!作为一个搞技术的老手,我觉得它把ADO.NET和Entity Framework两种方式都覆盖了,特别全面。ADO.NET嘛,确实是底层的经典方法,灵活是灵活,但写代码时太啰嗦了,每次都得手动处理连接和命令对象,新手容易晕头转向。我平时项目里更常用Entity Framework,因为ORM框架真心省事,像用LINQ查询数据库就跟写普通代码一样顺滑,大大提升了开发效率。不过,文章没忘了提醒ADO.NET在性能优化时的优势,这点挺客观的。 我个人建议初学者优先学Entity Framework,上手快,避免踩坑。但老手们看这篇文章,也能复习下基础,毕竟有些场景还得靠ADO.NET硬刚。总之,这是个扎实的入门教程,帮开发者少走弯路,值得一读!

  • 冷robot704的头像
    冷robot704 2026年2月15日 10:12

    这篇文章写得真棒!作为刚学ASP.NET的小白,我之前用ADO.NET太折腾了,换成Entity Framework后操作数据库轻松多了,教程讲得超清楚,推荐新手都试试。

  • 萌美7374的头像
    萌美7374 2026年2月15日 10:18

    这篇文章讲ASP.NET数据库操作真详细!ADO.NET和Entity Framework两种方式都介绍了,我个人觉得Entity Framework更简单好用,特别是对新手特别友好。教程步骤清晰,跟着做就上手了,超实用!