如何实现ASP.NET数据库插入?| ASP.NET数据库插入操作详解
- 技术教程
- 2026-02-07
- 2555
在ASP.NET中向数据库插入数据有多种方法,以下是两种主流方式(ADO.NET 和 Entity Framework Core)的详细步骤:

方法1:使用 ADO.NET(基础数据访问)
步骤:
- 配置连接字符串(Web.config 或 appsettings.json)
- 创建 SQL 连接和命令
- 使用参数化查询防止 SQL 载入
- 执行插入操作
// 示例:向 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 推荐方式)
步骤:
- 定义数据模型
- 配置 DbContext
- 依赖载入 DbContext
- 添加数据并保存
代码实现:
创建模型类
public class User { public int Id { get; set; } public string Name { get; set; } public string Email { get; set; } }
创建 DbContext

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")));
在控制器中插入数据

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); } }
最佳实践建议
- 参数化查询:始终使用参数防止 SQL 载入(ADO.NET)。
- 异步操作:EF Core 使用 SaveChangesAsync() 提升性能。
- 模型验证:在插入前用 ModelState.IsValid 检查数据有效性。
- 错误处理:用 try-catch 捕获数据库异常(如唯一键冲突)。
- 连接管理: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