我是新手,请帮我看看这个错在哪了?

[复制链接]
查看11 | 回复10 | 2021-1-27 07:20:44 | 显示全部楼层 |阅读模式
以下这个代码,登陆错误会提示n次,如果输入正确,页面不跳转,请大神帮帮我。
protectedvoiddlbutton_Click(objectsender,EventArgse)
{
stringlianjie=ConfigurationManager.ConnectionStrings["lianjieshujuku"].ConnectionString;
SqlConnectionconn=newSqlConnection(lianjie);
conn.Open();
SqlCommandcmd=newSqlCommand();
cmd.Connection=conn;
cmd.CommandText="select*fromuserinfo";
SqlDataReaderdr=cmd.ExecuteReader();
while(dr.Read())
{
if(tname.Text==dr["姓名"].ToString()&&tmima.Text==dr["密码"].ToString())
{
Session["username"]=tname.Text;
Session["zhiwu"]=dr["职务"].ToString();
Response.Redirect("main.aspx");
break;
}
else
{
Response.Write("");
continue;
}
}
if(conn.State==ConnectionState.Open)
{
conn.Close;
}
}

分 -->
回复

使用道具 举报

千问 | 2021-1-27 07:20:44 | 显示全部楼层
while循环当然会提示N次
你在验证成功的逻辑里没有做跳转
代码你写出来知道什么意思me?
回复

使用道具 举报

千问 | 2021-1-27 07:20:44 | 显示全部楼层
感觉逻辑有点问题,为什么要去所有数据呢?取满足条件的那一条不就行了?
SELECT*FROMUSERINFOWHEREUSERNAME='ADMIN'ANDPASSWORD=''XXXXXXX'

回复

使用道具 举报

千问 | 2021-1-27 07:20:44 | 显示全部楼层
按照2楼说的即可,但是按照你的做法,逻辑应该这样:
while(dr.Read())
{
Session["username"]=“”
if(tname.Text==dr["姓名"].ToString()&&tmima.Text==dr["密码"].ToString())
{
Session["username"]=tname.Text;
Session["zhiwu"]=dr["职务"].ToString();
Response.Redirect("main.aspx");
break;
}
}
If(Session["username"]=="")
{
Response.Write("");
}
回复

使用道具 举报

千问 | 2021-1-27 07:20:44 | 显示全部楼层
登陆要把所有的用户信息都都读取出来进行比较,这什么鬼?
回复

使用道具 举报

千问 | 2021-1-27 07:20:44 | 显示全部楼层
楼上说的对的
只要取一条符合记录就可以了
有符合记录就跳转
如果没有符合记录就提示错误
回复

使用道具 举报

千问 | 2021-1-27 07:20:44 | 显示全部楼层
cmd.CommandText="select*fromuserinfowhereusername="+tname.Text+"password="+tmima.Text;
这样不是会更快吗,为啥要全部循环呢

回复

使用道具 举报

千问 | 2021-1-27 07:20:44 | 显示全部楼层
谢谢大家我明白了,没错不应该全部读出来的。
回复

使用道具 举报

千问 | 2021-1-27 07:20:44 | 显示全部楼层
谢谢大家我明白了,没错不应该全部读出来的。
回复

使用道具 举报

千问 | 2021-1-27 07:20:44 | 显示全部楼层
谢谢大家我明白了,没错不应该全部读出来的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行