if (RadioButton1.Checked) //管理员
        {
            DataSet ds = db.getDataset("select count(*) from users where Loginname='" + TextBox1.Text + "'and UserPwd='" + TextBox2.Text + "' and system=1", "users");            if (ds.Tables[0].Rows.Count > 0)
            {
                //登录成功后设置登录时间和标识
                db.ExceNoQuery("update users set logintime='" + DateTime.Now + "',sign=1 where Loginname='" + TextBox1.Text + "'");
                //存储登录用户名称
                Session["loginname"] = TextBox1.Text;
                //登录成功后跳转
                Response.Redirect("Index.aspx");
            }
            else
            {
                ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('用户名或密码错误')</script>");
            }        }
        else
        {
            if (RadioButton2.Checked)//职员登录
            {
                DataSet ds = db.getDataset("select count(*) from users where Loginname='" + TextBox1.Text + "' and userpwd='" + TextBox2.Text + "' and system=0", "users");                if (ds.Tables[0].Rows.Count > 0)
                {
                    db.ExceNoQuery("update users set logintime='" + DateTime.Now + "',sign=1 where loginname='" + TextBox1.Text + "'");
                    Session["loginname"] = TextBox1.Text;
                    Response.Redirect("Index.aspx");
                }
                else
                {
                    ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('用户名或密码错误')</script>");                }
            }
        } 点击登陆时无论密码验证是否正确都自动跳到主页面,请问大家是语法的错误还是SQL 的错误呢??

解决方案 »

  1.   

    貌似都有问题,还是设断点调试吧,看看你的代码是如何往下运行的,然后进行跳转
    建议 TextBox1.Text 后面加上.trim()  把字符两边的空格过滤掉
      

  2.   

     DataSet ds = db.getDataset("select count(*) from users where Loginname='" + TextBox1.Text + "'and UserPwd='" + TextBox2.Text + "' and system=1", "users");            if (ds.Tables[0].Rows.Count > 0)
    错误在这,
    就算密码不对,也会返回一个值为0的结果集
    这样密码验证肯定不行.
      

  3.   

    汗你怎么可以用 if (ds.Tables[0].Rows.Count > 0)
    这个来判断呢。。你是select count(*)
    如果查到的是0,不也是会执行if里面的语句嘛。
      

  4.   

    select count(*) 即使查询为0 最后返回也会添加到datasetds.Tables[0].Rows.Count 的结果始终是大于0 可以修改成  select count(*).... 返回值 Command.ExecuteScalar() 大于0
      

  5.   

    如果1天都找不到bug语句,那么最好把代码删除了,重新编写——写一点就测试一点,而不要写完了才测试。