【发布时间】:2011-12-05 05:23:52
【问题描述】:
我有以下数据库结构:
用户表:姓名、用户名、部门(用户名为主键)
角色表: RoleID、RoleName(RoleID为主键)
UserRole表: UserRoleID、Username、RoleID(UserRoleID为主键)
我想通过删除当前角色并插入新角色而不是使用 UPDATE 命令来更新用户的角色,但我不知道该怎么做。
我的 ASP.NET 代码:
<div class="content">
<table>
<tr>
Current Role:
<asp:Label ID="lblRole" runat="server"></asp:Label>
</tr>
<tr>
<asp:Label ID="Label1" runat="server" BackColor="#FFFF99" Font-Bold="True" ForeColor="#000099" />
<asp:RadioButtonList ID="radio1" runat="server" TextAlign="left">
<asp:ListItem id="option1" runat="server" Value="Admin" />
<asp:ListItem id="option2" runat="server" Value="Contribute" />
<asp:ListItem id="option3" runat="server" Value="User" />
</asp:RadioButtonList>
<asp:Button ID="Button1" runat="server" Text="Submit" OnClick="Button1_Clicked" />
<span id="infoSpan" runat="server" style="color:Red;"></span>
</tr>
</table>
</div>
还有 C# 代码隐藏:
protected void Button1_Clicked(object sender, EventArgs e)
{
//If one of the items is selected AND a username exists in the Username session object update the user role
if (!String.IsNullOrEmpty(radio1.SelectedValue) && Session["Username"] != null)
{
string connString = "Data Source=localhost\\sqlexpress;Initial Catalog=psTest;Integrated Security=True";
string cmdText = "UPDATE Roles SET RoleName = '" + radio1.SelectedValue + "'" +
"WHERE Username = '" + Session["Username"].ToString() + "'";
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(cmdText, conn))
{
cmd.ExecuteScalar();
infoSpan.InnerText = String.Format("The users role has been updated to - {0}", radio1.SelectedValue);
}
}
}
}
编辑:
我没有使用 ASP.NET 成员资格。我想出了数据库设计来使数据库完全规范化。另外,因为公司可能会要求我同时给用户一个角色。
【问题讨论】:
-
我猜你应该更新而不是删除和插入。
-
提供更多细节...您使用的是 aspnet 会员吗?
-
我不明白你在UserRole表中提到:UserRoleID和RoleID有什么区别...