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

ASP.NET中使用Session更新用户姓名记录失败问题求助

ASP.NET中使用Session更新用户姓名的修复方案

你的代码存在几个关键问题导致更新失败:

  • 未执行SQL更新命令:创建SqlCommand对象后,没有调用ExecuteNonQuery()方法,数据库根本没收到更新请求
  • 提前关闭数据库连接:在命令执行前就调用了con.Close(),导致命令无法正常执行
  • 存在SQL注入风险:直接拼接用户输入和Session值到SQL语句中,极易引发安全问题
  • 资源管理不当:未用using语句管理数据库连接和命令,可能造成连接池泄漏

修正后的代码:

protected void submit_Click(object sender, EventArgs e)
{
    Label2.Text = Session["id"]?.ToString() ?? string.Empty;
    
    // 使用using自动释放连接和命令资源
    using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString))
    {
        string updateQuery = "UPDATE register SET name = @Name WHERE email = @Email";
        
        using (SqlCommand cmd = new SqlCommand(updateQuery, con))
        {
            // 参数化查询避免SQL注入
            cmd.Parameters.AddWithValue("@Name", name.Text);
            cmd.Parameters.AddWithValue("@Email", Session["id"]?.ToString() ?? string.Empty);
            
            con.Open();
            // 执行更新命令
            int affectedRows = cmd.ExecuteNonQuery();
            
            // 可选:根据受影响行数判断更新结果
            if (affectedRows > 0)
            {
                Label2.Text = "姓名更新成功";
            }
            else
            {
                Label2.Text = "未找到匹配的用户记录";
            }
        }
    }
}

关键改进说明:

  • using语句自动管理连接和命令资源,无需手动调用Close(),避免资源泄漏
  • 参数化查询替代字符串拼接,彻底规避SQL注入风险
  • 调用ExecuteNonQuery()执行更新,返回的受影响行数可用于验证更新是否成功
  • 添加空值判断,避免Session["id"]为null时引发空引用异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:10:42