You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET C#更新函数无报错但未生效,请求排查问题

问题排查与修复方案

核心问题:!IsPostBack 判断导致更新逻辑未执行

按钮点击属于PostBack请求,而你的更新代码被包裹在 if (!IsPostBack) 块中——这个条件仅在页面首次加载时成立,按钮触发的PostBack请求会直接跳过这段代码,所以数据库不会产生任何变化。

修复步骤

直接移除 if (!IsPostBack) 条件判断,让按钮点击时能正常执行更新逻辑:

protected void Button2_Click(object sender, EventArgs e)
{
    string sql = "UPDATE EUTHANASIA SET [DESC] = @DESC, MEDICINE = @MEDICINE, DOSE = @DOSE, UOM = @UOM, STATUS = @STATUS, EXECUTIONDATE = @EXECUTIONDATE, UPDATEDDATE = @UPDATEDDATE WHERE EUTHANASIAID = @EUTHANASIAID";

    SqlConnection con = new SqlConnection(cs);

    SqlCommand cmd = new SqlCommand(sql, con);

    var culture = new CultureInfo("ms-MY");
    string description = Convert.ToString(ddl_Desc.SelectedItem.Value);
    string medicine = Convert.ToString(ddl_med.SelectedItem.Value);
    float dose = (float)Convert.ToDouble(txt_Dose.Text);
    string uom = Convert.ToString(ddl_Uom.SelectedItem.Value);
    string status = Convert.ToString(ddl_Status.SelectedItem.Value);
    DateTime executionDate = Convert.ToDateTime(txt_ExeDate.Text, culture);
    DateTime updatedDate = DateTime.Now;

    cmd.Parameters.AddWithValue("@DESC", description);
    cmd.Parameters.AddWithValue("@MEDICINE", medicine);
    cmd.Parameters.AddWithValue("@DOSE", dose);
    cmd.Parameters.AddWithValue("@UOM", uom);
    cmd.Parameters.AddWithValue("@STATUS", status);
    cmd.Parameters.AddWithValue("@EXECUTIONDATE", executionDate);
    cmd.Parameters.AddWithValue("@EUTHANASIAID", petNoTxt.Text);
    cmd.Parameters.AddWithValue("@UPDATEDDATE", updatedDate);

    con.Open();

    int rowsAffected = cmd.ExecuteNonQuery();

    Console.Write(rowsAffected);

    con.Close();
  
    Response.Redirect("BO_EuthanasiaSummary.aspx");
}

额外优化建议

  • 使用using语句自动释放数据库连接,避免连接泄漏:
using (SqlConnection con = new SqlConnection(cs))
{
    con.Open();
    int rowsAffected = cmd.ExecuteNonQuery();
    // 其他逻辑
}
  • 增加异常捕获,处理日期格式错误、数值转换失败等问题,方便后续排查:
try
{
    // 更新逻辑代码
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
    // 可添加日志记录或用户提示逻辑
}
  • 检查rowsAffected的值,如果返回0,说明没有匹配到EUTHANASIAID对应的记录,需要验证petNoTxt.Text的值是否在数据库中存在。

内容的提问来源于stack exchange,提问作者user19914311

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 16:35:23