怎样操作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中如何实现后台插入新商品并保存到数据库?

    在ASP.NET开发中,实现后台插入新商品并持久化至数据库是电商系统、内容管理系统等应用的核心功能之一,这一过程不仅涉及后端逻辑编写,还需关注数据完整性、性能优化及系统稳定性,确保商品信息准确、高效地存储,本文将详细阐述ASP.NET中实现该功能的技术路径,结合酷番云的云产品经验,提供从环境搭建到实际部署的完整……

    2026年1月19日
    0400
  • ASP.NET空间购买怎么选?价格多少?推荐哪个服务商?

    ASP.NET作为微软开发的动态网页技术框架,在构建企业级应用、电商网站、内容管理系统等领域具有广泛的应用,当开发者或企业决定部署基于ASP.NET的技术栈时,选择合适的空间(即服务器资源)是保障网站稳定运行、提升用户体验的关键一步,ASP.NET空间购买并非简单的资源采购,而是一个涉及技术选型、成本效益与长期……

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

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

      2026年1月10日
      020
  • 想学asp.net网站登录注册?入门视频教程推荐看什么?

    ASP.NET网站登录和注册入门视频教程ASP.NET作为微软推出的企业级Web开发框架,在构建安全、高效的用户认证系统时扮演关键角色,登录与注册模块是网站交互的核心入口,直接影响用户体验与系统安全性,本教程通过系统化的视频形式讲解ASP.NET网站登录和注册的实现流程,涵盖从基础概念到高级实践的全流程,结合实……

    2026年1月21日
    0320
  • ASP.NET 2.0中CSS失效的常见原因及30种排查解决策略揭秘?

    在ASP.NET 2.0项目中,CSS样式失效是一个常见的问题,这可能会影响应用程序的用户体验,以下是一些解决ASP.NET 2.0中CSS失效的方法,帮助您恢复样式并优化网页显示,CSS失效的可能原因在开始解决CSS失效的问题之前,了解可能的原因是很重要的,以下是一些导致CSS失效的常见原因:浏览器缓存问题……

    2025年12月16日
    0870

发表回复

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