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

ASP.NET用户编辑异常:SQL Server存储过程返回成功但数据未更新

电商后台编辑用户模块数据库未更新但返回成功问题排查

核心问题:参数传递拼写错误

在btnSaveChanges_Click方法调用Izmena_Korisnika时,存在变量名拼写错误:

// 错误:使用了未定义的变量mail
int izmena_korisnika = moj_nalog1.Izmena_Korisnika(name, surname, username, password, mail, country, city, postCode, address, user_role);

需替换为已定义的email变量:

// 正确:使用定义好的email变量
int izmena_korisnika = moj_nalog1.Izmena_Korisnika(name, surname, username, password, email, country, city, postCode, address, user_role);

为什么会返回"成功"?

未定义的mail变量在编译允许的情况下会默认传递空字符串。如果数据库中存在邮箱为空的用户,存储过程会匹配该用户并执行更新,返回0让前端判定为成功;如果不存在空邮箱用户,存储过程会返回-1,但你的场景中恰好触发了前者逻辑,导致错误更新了无关用户而非目标用户。

其他潜在问题排查

  1. 全局数据库对象复用的参数残留问题
    若WebShop类中的conn和comm是全局对象,多次调用时未清空参数集合,会导致参数混乱。建议每次调用前添加参数清空逻辑:

    comm.Parameters.Clear(); // 清空历史参数,避免干扰
    // 再逐一添加新参数
    comm.Parameters.Add(new SqlParameter("@ime", SqlDbType.NVarChar, 100, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Current, name));
    
  2. 存储过程逻辑漏洞
    当前存储过程依赖邮箱作为更新条件,若用户编辑时修改了邮箱,会出现"判断新邮箱存在→更新该邮箱用户,但实际要更新的是原邮箱用户"的逻辑错误。建议从Session["EditMail"]中获取原始邮箱作为更新条件,而非修改后的邮箱。

为什么myaccount.aspx页面功能正常?

该页面的代码无变量拼写错误,参数传递完全匹配方法要求,因此更新逻辑能正确执行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 06:17:51