在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
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/285763.html

