protected void Page_Load(object sender, EventArgs e)
    { 
        if(!Page.IsPostBack)
        {
            sCap = Createcapstring(6); //验证码字符创建
            capimg.Src = sCapimageurl + sCap;
        }
    }
    protected void logbut_Click(object sender, EventArgs e)
    {
          if(Page.IsValid == true)
          {
              if(captxt.Text != sCap)
              {
                  string errortext = "验证码错误!";
                  capref.Text = errortext;
                  Response.Write("<script>alert('验证码错误!')</script>");
                  sCap = Createcapstring(6);
                  capimg.Src = sCapimageurl + sCap;
              }
              string adminid = "";                        
              //string adminname = Server.HtmlEncode(username.Text.Trim());
              //string adminpsd = Server.HtmlEncode(password.Text.Trim());
              string adminname = username.Text.Trim();
              string adminpsd = password.Text.Trim();
              string str = "SELECT * FROM T_Admin WHERE F_UserName='" + adminname + "' AND F_Password='" + password + "';";
              olecmd = new OleDbCommand(str, olecon);
              try
              {
                  olecon.Open();
                  OleDbDataReader oledr = olecmd.ExecuteReader(CommandBehavior.CloseConnection);
                  if (oledr.Read())
                  {
                      adminid = oledr["AdminID"].ToString();
                      Session["AdminID"] = adminid;
                      Response.Redirect("~/Crmain.aspx");       
                  }
                  else
                  {
                      Response.Write("<script>alert('用户名或密码有误!')</script>");
                  } 
                  oledr.Close();
                  oledr.Dispose();
              }
              catch (OleDbException oleex)
              {
                  throw oleex;
              }
              finally 
              {
                  olecon.Close();
              }  
          }
    }
   if (oledr.Read())
                  {
                      adminid = oledr["AdminID"].ToString();
                      Session["AdminID"] = adminid;
                      Response.Redirect("~/Crmain.aspx");       
                  }
加了断点,if (oledr.Read())没有执行直接跳进else,sql语句应该没问题啊,都没报错,试了很多总是登录错误,望各位大大帮忙看看

解决方案 »

  1.   

      就是sql语句问题
     string str = "SELECT * FROM T_Admin WHERE F_UserName='" + adminname + "' AND F_Password='" + password + "';";
    红色分号删掉
      

  2.   

                   try
                  {
                      olecon.Open();
                      OleDbDataReader oledr = olecmd.ExecuteReader();
                      //   OleDbDataReader oledr = olecmd.ExecuteReader(CommandBehavior.CloseConnection); 
                      if (oledr.Read())
                      {
                          adminid = oledr["AdminID"].ToString();
                          Session["AdminID"] = adminid;
                          Response.Redirect("~/Crmain.aspx");       
                      }
                      else
                      {
                          Response.Write("<script>alert('用户名或密码有误!')</script>");
                      } 
                      oledr.Close();
                      oledr.Dispose();
                  }DataReader是一个前向只读的数据读取器,在使用的时候,数据连接是不能关闭的,你关闭了,所以读取不到数据,直接进入else。
      

  3.   

    断点看一下你的那个SQL语句,然后拿到数据库查询一下,是否有数据???   string adminname = username.Text.Trim();
                  string adminpsd = password.Text.Trim();
                  string str = "SELECT * FROM T_Admin WHERE F_UserName='" + adminname + "' AND F_Password='" + password + "'";
                  olecon.Open();
                  olecmd = new OleDbCommand(str, olecon);
                  try
                  {
                      OleDbDataReader oledr = olecmd.ExecuteReader();
      

  4.   

    你写错了 protected void Page_Load(object sender, EventArgs e)
        { 
            if(!Page.IsPostBack)
            {
                sCap = Createcapstring(6); //验证码字符创建
                capimg.Src = sCapimageurl + sCap;
            }
        }
        protected void logbut_Click(object sender, EventArgs e)
        {
              if(Page.IsValid == true)
              {
                  if(captxt.Text != sCap)
                  {
                      string errortext = "验证码错误!";
                      capref.Text = errortext;
                      Response.Write("<script>alert('验证码错误!')</script>");
                      sCap = Createcapstring(6);
                      capimg.Src = sCapimageurl + sCap;
                  }
                  string adminid = "";                        
                  //string adminname = Server.HtmlEncode(username.Text.Trim());
                  //string adminpsd = Server.HtmlEncode(password.Text.Trim());
                  string adminname = username.Text.Trim();
                  string adminpsd = password.Text.Trim();
                 // string str = "SELECT * FROM T_Admin WHERE F_UserName='" + adminname + "' AND F_Password='" + password + "'"; //看见没有,这里的密码是password,然你获取到的密码是adminpsd 
                 string str = "SELECT * FROM T_Admin WHERE F_UserName='" + adminname + "' AND F_Password='" + adminpsd + "'";
                  olecon.Open();
                  olecmd = new OleDbCommand(str, olecon);
                  try
                  {
                      OleDbDataReader oledr = olecmd.ExecuteReader();
                      if (oledr.Read())
                      {
                          adminid = oledr["AdminID"].ToString();
                          Session["AdminID"] = adminid;
                          Response.Redirect("~/Crmain.aspx");       
                      }
                      else
                      {
                          Response.Write("<script>alert('用户名或密码有误!')</script>");
                      } 
                      oledr.Close();
                      oledr.Dispose();
                  }
                  catch (OleDbException oleex)
                  {
                      throw oleex;
                  }
                  finally 
                  {
                      olecon.Close();
                  }  
              }
        }
      

  5.   

    sql语句、连接、读取都执行正常,数据库是我直接在ACCESS输入保存的,试了几个账号密码都是一样..