日期:2014-05-18  浏览次数:20516 次

这样的判断有错吗?(与数据库中的值进行比较)急!急!
它为什么没有进行判断 把if--else--中的结果都输出了
private   void   btnlogin_Click(object   sender,   System.EventArgs   e)
{
da=new   SqlDataAdapter( "select   UserName,UserPwd   from   Login ",con);
DataSet   ds=new   DataSet();
da.Fill(ds);  
for(int   i=0;i <ds.Tables[0].Rows.Count;i++)
{
string   name=ds.Tables[0].Rows[i].ItemArray[0].ToString()
string   pwd=ds.Tables[0].Rows[i].ItemArray[1].ToString();
if(txtname.Text==name   &&   txtpwd.Text==pwd)
{
Response.Write( "od ");
}
                                      else
{
MyError.Text= "登陆失败,请先进行验证! ";
}
}
}
如过将if中的语句写成Response.Redirect( "login.aspx ");
就完全正确了

------解决方案--------------------
-_-#你这样写当然是这种结果了
换成如过将if中的语句写成Response.Redirect( "login.aspx ");
事实上也是不正确的,只是最后跳转到这一页了而已

for(int i=0;i <ds.Tables[0].Rows.Count;i++)
不能把所有记录取出后,用for循环来判断用户名和密码是否正确,有数十万条记录的,每登陆一个用户就这样验证一下,那服务器不崩溃才怪-_-#,用输入的用户名和密码去数据库查询是否有满足条件的数据就可以了
------解决方案--------------------
select count(*) from Login where username=@username and userpwd=@userpwd

只要传两个传数进去
如果返回1就代表存在。。如果0的话就不存生
------解决方案--------------------
建议在SQL语句中就查出结果,在判断

实例化时改为
da=new SqlDataAdapter( "select UserName from Login where UserName= ' "+txtname.Text+ " ' and UserPwd= ' "+txtpwd.Text+ " ' ",con);
DataSet ds=new DataSet();
da.Fill(ds);
if(ds.Tables[0].Rows.Count> 0)
{
//成功时的操作
}
else
{
//失败提示
}