当前位置:首页 > 技术教程 > 正文

如何实现ASP.NET数据库插入?| ASP.NET数据库插入操作详解

在ASP.NET中向数据库插入数据有多种方法,以下是两种主流方式(ADO.NET 和 Entity Framework Core)的详细步骤:

如何实现ASP.NET数据库插入?| ASP.NET数据库插入操作详解 第1张

方法1:使用 ADO.NET(基础数据访问)

步骤:

  1. 配置连接字符串(Web.config 或 appsettings.json)
  2. 创建 SQL 连接和命令
  3. 使用参数化查询防止 SQL 载入
  4. 执行插入操作

// 示例:向 Users 表插入数据 using System.Data; using System.Data.SqlClient; public void InsertUser(string name, string email) { // 从配置获取连接字符串(推荐) string connectionString = ConfigurationManager.ConnectionStrings["YourDbConnection"].ConnectionString; // SQL 插入语句(参数化) string sql = @"INSERT INTO Users (Name, Email) VALUES (@Name, @Email)"; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand(sql, connection); // 添加参数 command.Parameters.AddWithValue("@Name", name); command.Parameters.AddWithValue("@Email", email); try { connection.Open(); int rowsAffected = command.ExecuteNonQuery(); Console.WriteLine($"插入成功,影响行数: {rowsAffected}"); } catch (Exception ex) { Console.WriteLine($"错误: {ex.Message}"); } } }

关键点:

  • 参数化查询:避免 SQL 载入攻破
  • 连接释放:使用 using 确保资源自动释放
  • 配置管理:连接字符串存储在配置文件中


方法2:使用 Entity Framework Core(ORM 推荐方式)

步骤:

  1. 定义数据模型
  2. 配置 DbContext
  3. 依赖载入 DbContext
  4. 添加数据并保存

代码实现:

创建模型类

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

创建 DbContext

如何实现ASP.NET数据库插入?| ASP.NET数据库插入操作详解 第2张

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

配置依赖载入(Program.cs)

var builder = WebApplication.CreateBuilder(args); // 从 appsettings.json 读取连接字符串 builder.Services.AddDbContext<AppDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

在控制器中插入数据

如何实现ASP.NET数据库插入?| ASP.NET数据库插入操作详解 第3张

public class UserController : Controller { private readonly AppDbContext _context; public UserController(AppDbContext context) { _context = context; // 依赖载入 } [HttpPost] public async Task<IActionResult> Create(User user) { if (ModelState.IsValid) { _context.Users.Add(user); // 添加到上下文 await _context.SaveChangesAsync(); // 保存到数据库 return RedirectToAction("Index"); } return View(user); } }


最佳实践建议

  1. 参数化查询:始终使用参数防止 SQL 载入(ADO.NET)。
  2. 异步操作:EF Core 使用 SaveChangesAsync() 提升性能。
  3. 模型验证:在插入前用 ModelState.IsValid 检查数据有效性。
  4. 错误处理:用 try-catch 捕获数据库异常(如唯一键冲突)。
  5. 连接管理:ADO.NET 确保连接使用后关闭(using 语句)。

常见问题排查

  • 连接失败:检查连接字符串、数据库服务状态、防火墙。
  • 插入失败:检查表结构约束(如非空字段、主键重复)。
  • EF Core 迁移:确保已执行 Add-Migration 和 Update-Database。


扩展:使用存储过程插入(ADO.NET)

using (SqlConnection conn = new SqlConnection(connectionString)) { SqlCommand cmd = new SqlCommand("sp_InsertUser", conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@Name", name); cmd.Parameters.AddWithValue("@Email", email); conn.Open(); cmd.ExecuteNonQuery(); }

根据项目需求选择合适的方法:

  • 直接控制 SQL → ADO.NET
  • 快速开发/维护性 → EF Core

0