syxyxqyx
syxyxqyx
2020-06-24 13:28
采纳率: 100%
浏览 269

求助!C#网页设计-登陆界面(连接SQL server)。

一个简单的登陆界面,然后输入账号和密码,判断用户类型是学生(1)还是管理员(2)。
从SQL sever中提取登陆名,密码,权限。
作if语句的判断,对了就跳转到别的页面,但是就是if语句这里总是不对,用一个一个输出也看了,数值上没有什么问题,就是登陆不进去
能请各位大神门帮帮我吗,这个马上要答辩,挺急的。
上代码和图

一个个输出的结果

部分数据库:

图片说明

using (SqlConnection myconnection = new SqlConnection(con))
        {
            DataSet ds = new DataSet();
            using (SqlDataAdapter sda = new SqlDataAdapter("select * from lo where name='" + T1.Text.ToString() + "' and pw = '" + T2.Text.ToString() + "'", con))
            {
                sda.Fill(ds);
                if (ds.Tables[0].Rows.Count > 0)
                {
                    //给定的用户名密码查询到了数据
                    Response.Write(ds.Tables[0].Rows[0][2].ToString());
                    if (ds.Tables[0].Rows[0][2].ToString()== "1")
                        Response.Redirect("stu.aspx?id=" + T1.Text.ToString()); 
                    else if(ds.Tables[0].Rows[0][2].ToString() == "2")
                        Response.Redirect("Default.aspx?id=" + T1.Text.ToString());
                    else
                        Response.Write("<script>alert('对不起,您不是合法用户或者密码错误!')</script>");
                }
            }     
        }

刚刚根据一位大神改了一下代码,但还是老问题,if语句不对

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • qq_28199467
    已采纳

    这样写试试

      DataTable dt = new DataTable();
                SqlConnection conn = new SqlConnection(con);
                string sql = string.Format("select * from lo where name='{0}' and pw='{1}'", T1.Text.ToString(), T2.Text.ToString());
                SqlCommand comm = new SqlCommand(sql, conn);
                conn.Open();
                SqlDataAdapter da = new SqlDataAdapter(comm);
                da.Fill(dt);
                conn.Close();
    
                if (dt.Rows.Count > 0)
                {
                    if(Convert.ToInt32(dt.Rows[0]["qx"].ToString()) == 1)
                        Response.Redirect("stu.aspx?id=" + T1.Text.ToString());
                    else if(Convert.ToInt32(dt.Rows[0]["qx"].ToString()) == 2)
                        Response.Redirect("Default.aspx?id=" + T1.Text.ToString());
                    else
                        Response.Write("<script>alert('对不起,您不是合法用户或者密码错误!')</script>");
                }
                else {
                    Response.Write("<script>alert('对不起,用户不存在!')</script>");
                }
    
    
    点赞 评论
  • caozhy

    String sql = "select "+name+ " from lo ";
    这个就不对
    你的列叫做name,而不是变量

    应该是
    String sql = "select * from lo where name = '" + name + "'";

    点赞 评论
  • m86872125
    HyperMa0 2020-06-24 15:00

    试一下 ds.Tables[0].Rows[0][2].ToString().Trim()== "1"

    去空格

    我在回答你之前,看了夜空的答案,他if里的代码和你完全一样,我答完之后他编辑了他的答案(看编辑时间),按他的说法又单独的new了一个dt,并且if里增加了强转int,这个强转是避免空格的思路,是不是抄我的就不清楚了,重要的是你要知道问题到底夜空说的那个dt问题还是我说的空格的原因

    点赞 评论

相关推荐