+ -
当前位置:首页 → 问答吧 → 大家帮忙看看这个reader.Read()为什么老是false

大家帮忙看看这个reader.Read()为什么老是false

时间:2011-12-13

来源:互联网

一个ASP.net登录页面的代码
protected void btnLogin_Click(object sender, EventArgs e)
  {
  string UID = tbusername.ToString();
  string PWD = tbpassword.ToString();
  for (int i = 0; i < LimitSelect.Items.Count; i++)
  {
  if (LimitSelect.Items[i].Selected)
  {
  Label1.Text = LimitSelect.Items[i].Value;
  }
  }
  string Power = Label1.Text;
  string sqlstr = "SELECT username, pwd, Limits FROM UserInfo WHERE (username = '" + UID + "') AND (pwd = '" + PWD + "') AND (Limits = '" + Power + "')"; 

  SqlConnection conn = new SqlConnection(@"Data Source=123-PC\SQLEXPRESS;Initial Catalog=LibraryMS;Integrated Security=True");
  SqlCommand cmd = new SqlCommand(sqlstr,conn);

  if (conn.State == ConnectionState.Closed)
  {
  conn.Open();
  }
  SqlDataReader reader = cmd.ExecuteReader();  
  SqlDataAdapter sqlcmd = new SqlDataAdapter(sqlstr,conn);

  if (reader.Read())
  {
  Session["username"] = UID;
  Session["pwd"] = PWD;
  Session["Limits"] = Power;
  switch (Power)
  {
  case "0":
  Response.Redirect("SysAdmin.aspx");
  break;
  case "1":
  Response.Redirect("Manager.aspx");
  break;
  case "2":
  Response.Redirect("Users.aspx");
  break;
  default:
  Response.Redirect("Customers.aspx");
  break;
  }
  }
}

作者: zhkm_cb   发布时间: 2011-12-13

select没有取出来数据?

作者: ssp2009   发布时间: 2011-12-13

调试一下看看sqlstr 放到数据库执行下看看是否找到行

作者: ssp2009   发布时间: 2011-12-13

string sqlstr = "SELECT username, pwd, Limits FROM UserInfo WHERE (username = '" + UID + "') AND (pwd = '" + PWD + "') AND (Limits = '" + Power + "')";  

加断点 看看SQL 是怎样的

是不是 UID 和PWD 为 空

作者: Sandy945   发布时间: 2011-12-13

我server managerment studio express上面select执行过可以找到数据,就是不知道程序里面怎么运行不出来
我断点查看了一下
reader()里面
Depth = 0
FieldCount = 3
HasRows = false
IsClosed = false
RecordsAffected = -1
VisibleFieldCount = 3

作者: zhkm_cb   发布时间: 2011-12-13

UID PWD Power 我都看了不为空的

作者: zhkm_cb   发布时间: 2011-12-13

HasRows = false
--------
就说明没数据

你断点看看 sqlstr ,然后在SQL中执行下

作者: Sandy945   发布时间: 2011-12-13

HasRows = false

作者: ssp2009   发布时间: 2011-12-13

SELECT username, pwd, Limits FROM UserInfo WHERE (username = 'System.Web.UI.WebControls.TextBox') AND (pwd = 'System.Web.UI.WebControls.TextBox') AND (Limits = '0')
这是断点显示的

作者: zhkm_cb   发布时间: 2011-12-13

string UID = tbusername.ToString();
  string PWD = tbpassword.ToString();
然后我吧tb空间的值都写上了啊,不会没值的

作者: zhkm_cb   发布时间: 2011-12-13

string UID = tbusername.Text;  
string PWD = tbpassword.Text;

作者: yubofighting   发布时间: 2011-12-13

引用 9 楼 zhkm_cb 的回复:
string UID = tbusername.ToString();
string PWD = tbpassword.ToString();
然后我吧tb空间的值都写上了啊,不会没值的

没有取到textbox的值
string UID = tbusername.Text;  
string PWD = tbpassword.Text;

作者: yubofighting   发布时间: 2011-12-13

11楼说得对,哎,我是新手,低级错误

作者: zhkm_cb   发布时间: 2011-12-13