首页 > 解决方案 > 如何读取多个表并根据用户的角色将用户重定向到不同的页面

问题描述

我目前正在开发可以将不同角色(家长和老师)重定向到不同页面的登录页面。但是,我的 Microsoft SQL Server 数据库中有 3 个表,它们是:

[帐户]

援助(PK)| 用户名 | 密码

[account_role]

角色ID (PK)(FK) | 援助 (PK)(FK)

[角色]

角色 ID (PK) | 名称

一旦他们单击登录按钮并将他们重定向到不同的页面,我正在尝试验证不同的用户。我认为问题出在这里:

string checkrole = "select RName from [account] where username= '" + TextBoxUser.Text + "'";
SqlCommand roleCom = new SqlCommand(checkrole, con);
string role = roleCom.ExecuteScalar().ToString();
if (role == "Teacher")
{
    Session["New"] = TextBoxUser.Text;
    Session["Username"] = TextBoxUser.Text;
    Response.Redirect("HomeTeacher.aspx");
}
else
{
    Response.Redirect("HomeParent.aspx");
}

表 [role] 中的 RName 列与 [account] 不是来自同一个表,那么如何更改它以使其正常工作?请帮忙

标签: c#sql-servervisual-studio

解决方案


您必须加入表格

SELECT r.RName
FROM
    account a
    INNER JOIN account_role ar
        ON a.AID = ar.AID
    INNER JOIN role r
        ON ar.RoleID = r.RoleID
WHERE
    a.username = @user

使用命令参数也比较好

roleCom .Parameters.AddWithValue("@user", TextBoxUser.Text);

请注意,使用命令参数时,SQL 文本不包含任何字符串分隔符。参数机制负责转义嵌入的撇号、格式化日期等。它还可以防止SQL 注入


推荐阅读