16,577
社区成员
发帖
与我相关
我的任务
分享using Microsoft.AspNetCore.Mvc; // 引入ASP.NET Core MVC框架的命名空间
using Microsoft.Extensions.Configuration; // 引入配置扩展的命名空间,用于读取配置文件
using System.Data.SqlClient; // 引入SqlClient命名空间,用于与SQL Server数据库交互
using MyWeb.Models; // 引入自定义的模型命名空间,包含SubmitModel类
namespace MyWeb.Controllers // 定义控制器所在的命名空间
{
[Route("api/[controller]")] // 设置路由,控制器名将被替换到URL中
[ApiController] // 标记此类为API控制器
public class SubmitController : ControllerBase // 继承自ControllerBase,创建一个API控制器类
{
private readonly IConfiguration _configuration; // 注入配置接口,用于读取配置文件
// 构造函数,接收IConfiguration参数,用于依赖注入
public SubmitController(IConfiguration configuration)
{
_configuration = configuration; // 将传入的配置对象赋值给私有字段
}
// 定义一个POST方法,接收前端传来的SubmitModel数据
[HttpPost]
public IActionResult SubmitData([FromBody] SubmitModel model)
{
// 检查传入的模型是否为空或SBH属性是否为空
if (model == null || string.IsNullOrEmpty(model.SBH))
{
// 如果数据无效,返回400 BadRequest响应
return BadRequest("Invalid data.SBH is required.");
}
// 从配置中读取数据库连接字符串
string? connectionString = _configuration.GetConnectionString("DefaultConnection");
// 检查连接字符串是否为空
if (string.IsNullOrEmpty(connectionString))
{
// 如果连接字符串为空,返回500 InternalServerError响应
return StatusCode(500, "Connection string is missing or empty.");
}
// 使用连接字符串创建SqlConnection对象
using (SqlConnection connection = new SqlConnection(connectionString))
{
try
{
// 打开数据库连接
connection.Open();
// 定义插入数据的SQL语句,使用参数化查询防止SQL注入
string insertQuery = "INSERT INTO QY (SBH) VALUES (@SBH)";
// 使用SqlCommand对象执行SQL语句
using (SqlCommand command = new SqlCommand(insertQuery, connection))
{
// 添加参数及其值到SqlCommand对象中
command.Parameters.AddWithValue("@SBH", model.SBH);
// 执行SQL语句,返回受影响的行数
int rowsAffected = command.ExecuteNonQuery();
// 如果插入成功(受影响的行数大于0),返回200 OK响应及成功信息
return Ok(new { success = rowsAffected > 0, message = "Data submitted successfully." });
}
}
catch (SqlException)
{
// 捕获SqlException异常,通常表示数据库错误
// 可以在这里添加日志记录(可选)
return StatusCode(500, "Database error occurred while submitting data.");
}
catch (Exception)
{
// 捕获所有其他异常
// 可以在这里添加日志记录(可选)
return StatusCode(500, "An error occurred while submitting data.");
}
}
}
}
}
// 可能的数据未写入数据库的原因:
// 1. 模型验证失败,返回了BadRequest响应。
// 2. 连接字符串为空或未正确配置,返回了500响应。
// 3. 数据库连接失败或SQL语句执行错误,捕获了SqlException异常,返回了500响应。
// 4. 其他未知异常,捕获了Exception异常,返回了500响应。
// 5. 数据库表QY不存在,或者列SBH不存在,或者列SBH不允许插入NULL值(尽管代码中已检查SBH是否为空)。
// 6. 数据库权限问题,导致无法插入数据。
// 7. 数据库事务回滚(如果此代码段是在事务中运行的,但代码中未显示事务处理)。