[英]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.