一个很简单的分角色登陆,先建立了一个Project数据库然后一个user_table表,
user_id  user_password  userlevel
123      123            ymanager     varchar
1234     1234           supermaster  varchar
12345    12345          teacher      varchar
defult2.aspx.cs 源码如下 protected void btLOGIN_Click(object sender, EventArgs e)
    {
        string conn = "server=PC-201005131654;database=Project;user id=sa;pwd=123";
        SqlConnection cn = new SqlConnection(conn);
        cn.Open();
        string strsql = "select user_password,user_level from user_table where user_id='" + tbID.Text+ "'";
        SqlCommand cmd = new SqlCommand(strsql, cn);
        SqlDataReader rd = cmd.ExecuteReader();
        while (rd.Read())
        {
            if (rd.GetValue(0).ToString() == tbPASSWORD.Text)
            {
                string str = rd.GetValue(1).ToString();
                string str1 = ddlLEVEL.SelectedValue;
                if (str == str1)
                {
                    switch (str)
                    {
                        case "ymanager":
                            Response.Redirect("YSTUDY_MANAGER.aspx");
                            break;
                        case "supermaster":
                            Response.Redirect("SUPER_MASTER.aspx");
                            break;
                        case "teacher":
                            Response.Redirect("teacher.aspx");
                            break;
                       
                    }}}}}
运行没有错误,但是页面不跳转于是我把user_table表放在Northwind库里,竟然就好用了!
费解啊···这个系统里还有很多表在Project数据库里,不想重新见表了
[size=14px]求哪位大侠指点迷津啊![/size]

解决方案 »

  1.   

    难道问题在这里string str = rd.GetValue(1).ToString();
      string str1 = ddlLEVEL.SelectedValue;
      if (str == str1)
      

  2.   

    str 、str1 都trim一下啊,在lower一下试一试
      

  3.   

    using(SqlConnection cn = new SqlConnection(conn))
    {
    cn.Open();
    string strsql = "select user_password,user_level from user_table where user_id='" + tbID.Text+ "'";
    SqlCommand cmd = new SqlCommand(strsql, cn);
    SqlDataReader rd =cmd.ExecuteReader(CommandBehavior.CloseConnection);
    if(rd.HasRows && rd.Read()){}
    }
      

  4.   

    单步执行,知道为什么不跳转的原因,debug的时候,你可以看到变量的内容,知道为什么没有执行那个分支。
      

  5.   

    先不说什么原因,代码太乱了。
    1,数据访问,业务逻辑,页面控制分开
    2,SqlDataReader不关闭你就跳
    3,一般密码不取出来比较,输入的密码作为条件查询。遵守一下上面三点估计你得问题就解决了。
      

  6.   

    单步跟踪,发现用Project数据库,if (str == str1)里str==str1的值是“ymanager”,但是不要执行switch语句,这是为什么呢?用Northwind数据库switch语句就执行····