问题描述
protectedvoidButton1_Click(objectsender,EventArgse){stringconstr="DataSource='MY-PC';IntegratedSecurity=True;Pooling=False;InitialCatalog='zxj'";SqlConnectionconn=newSqlConnection(constr);conn.Open();stringsql="selectcount(*)fromloginwhereusername='"+this.TB_name.Text+"'anduserpwd='"+this.TB_pwd.Text+"'";SqlCommandcmd=newSqlCommand(sql,conn);intstate=Convert.ToInt32(cmd.ExecuteScalar());if(state>0||state==0){Response.Write("正确");}else{Response.Write("错误");}}最后显示的都是这一句Response.Write("正确")不管正确还是错误
解决方案
解决方案二:
if(state>0||state==0)======changeto:if(state>0)stringsql="selectcount(*)fromloginwhereusername='"+this.TB_name.Text+"'anduserpwd='"+this.TB_pwd.Text+"'";========stringsql="selectcount(*)fromloginwhereusername='"+this.TB_name.Text+"'anduserpwd='"+this.TB_pwd.Text+"'";
解决方案三:
if(state>0||state==0)======changeto:if(state>0)stringsql="selectcount(*)fromloginwhereusername='"+this.TB_name.Text+"'anduserpwd='"+this.TB_pwd.Text+"'";========stringsql="selectcount(*)fromloginwhereusername='"+this.TB_name.Text+"'anduserpwd='"+this.TB_pwd.Text+"'";
解决方案四:
还是不行呢讷讷
解决方案五:
引用楼主qq_29513085的回复:
if(state>0||state==0){Response.Write("正确");}else{Response.Write("错误");}}最后显示的都是这一句Response.Write("正确")不管正确还是错误
你是说“即使state<0也会执行这一句”么?贴出你的调试画面来,执行到“这一句”,并且这个画面中确实可以监视到state变量值。
解决方案六:
引用楼主qq_29513085的回复:
intstate=Convert.ToInt32(cmd.ExecuteScalar());if(state>0||state==0){Response.Write("正确");}else{Response.Write("错误");}
你不觉得你写的判断有问题吗???你的else根本就没有机会进入啊找到记录了state肯定就是大于0没找到记录state就是0啊。。。这两种结果都会执行Response.Write("正确");除非返回结果是个负数才会进你的else,但是条件查询的结果只会是大于等于0的值。。根本木有小于0的情况
解决方案七:
1、先在and前增加一个空格username='"+this.TB_name.Text+"'anduserpwd
2、单步调试一下,拿到你的sql变量的值,去数据库执行一下,看返回值是神马?3、你的if条件有问题,显然永远是true。selectcount(*)查询结果,永远大于等于0,所以你的if条件永远成立4、函数执行完,一定要把SqlConnection进行关闭(Close)
解决方案八:
引用楼主qq_29513085的回复:
stringsql="selectcount(*)fromloginwhereusername='"+this.TB_name.Text+"'anduserpwd='"+this.TB_pwd.Text+"'";
只要你这句话不报错,count(*)至少查出来的是0,所以.....
解决方案九:
intstate=Convert.ToInt32(cmd.ExecuteScalar());你这一句,会有<0的情况出现吗
解决方案十:
if(state>0){Response.Write("正确");}else{Response.Write("错误");}
解决方案十一:
看到这代码,吓到了,楼主是学生?问题有:1."'and(如楼上所言,and前需要空格)2.conn.Close();连接没关闭3.SQL注入。在密码框输入:'or1=1--
就登陆成功了。4.if(state>0||state==0)应为:if(state==1)
解决方案十二:
state值不对吧~~~
解决方案十三:
if(state>0||state==0)你自己翻译成中文看看如果state大于0或者state等于0,那么就正确那么什么情况下错误?只剩state小于0了从数据库返回的行数可能小于0?