使用sql的c#编程问题

本文关键字:编程 问题 sql 使用 | 更新日期: 2023-09-27 18:13:56

我的问题不是我的存储过程,而是我的代码中的某个地方不允许我更改数据库中的角色。虽然我知道它是正确编写的,但有人请好好看看我的代码,因为我真的很沮丧。提前谢谢你…

刀- - - - - -

    public void EditRole(Account account, RoleEnum role)
    {
        using (SqlConnection connection = ConnectionDao.GetConnection())
        {
            SqlCommand cmd = new SqlCommand("sp_Accounts_EditRoleByUsername", connection);
            cmd.CommandType = System.Data.CommandType.StoredProcedure;    
            cmd.Parameters.Add(new SqlParameter("@role", role);
            cmd.Parameters.Add(new SqlParameter("@username", account.Username));              
            cmd.ExecuteNonQuery();
        }
——

经理

       public static ResultEnum RoleChange(Account account, RoleEnum role)
    {
        ResultEnum result = ResultEnum.Success;
        try
        {
            AccountDao dao = new AccountDao();
            dao.EditRole(account, role);
        }
        catch (Exception)
        {
            result = ResultEnum.Error;
        }
        return result;
    }

页面-

       public partial class ManageRolesPage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Result<List<Account>> result = AccountManager.GetAll();
            if (result.ResultEnum == ResultEnum.Success)
            {
                ddlUser.DataSource = result.Data;
                ddlUser.DataTextField = "Username";
                ddlUser.DataValueField = "AccountId";
                ddlUser.DataBind();
            }
            else
            {
                lblInfo.Text = "database error";
            }
        }
    }
    protected void btnPermission_Click(object sender, EventArgs e)
    {
        Account account = new Account
        {
            Username = ddlUser.SelectedValue
        };
        RoleEnum role;
        if (rdlRole.SelectedValue == "Admin")
        {
            role = RoleEnum.Admin;
        }
        else
        {                
            role = RoleEnum.User;
        }

         ResultEnum result = AccountManager.RoleChange(account, role);
        switch (result)
        {
            case ResultEnum.Success:
                lblInfo.Text = "User: " + ddlUser.SelectedItem + " Has been edited to " + role;
                break;
            case ResultEnum.Error:
                lblInfo.Text = "Error";
                break;                
        }                      
    }

使用sql的c#编程问题

问题是您正在使用下拉菜单的选定值作为用户名

Account account = new Account
        {
            Username = ddlUser.SelectedValue
        };

其中as与数据源绑定时,值字段为AccountId

ddlUser.DataValueField = "AccountId";

所以在你的函数中AccountId实际上是作为该用户的UserName传递的。所以这使得你的查询得到了不寻常的结果。