簡體   English   中英

使用SQL的C#編程問題?

[英]C# programming issue using sql?

我的問題不是我的存儲過程,而是我的代碼中的某個地方不允許我更改數據庫中的角色。 盡管我知道它的編寫正確,但是有人會因為我對atm感到沮喪而對我的代碼有所了解。 謝謝。

道-

    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;                
        }                      

    }

問題是您使用下拉列表的選定值作為用戶名

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

當您將其與數據源綁定時,值字段為AccountId

ddlUser.DataValueField = "AccountId";

因此,在您的函數中, AccountId實際上是作為該用戶的UserName傳遞的。 這樣會使您的查詢結果異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM